murat1895 Geschrieben 19. Juli 2016 Teilen Geschrieben 19. Juli 2016 Hallo Zusammen, ich habe folgendes Problem ich möchte Artikel Sortiert ausgeben. Die Felder enthalten Text und Zahlen. Beispiel: - Holzschraube 10 x 120 - Holzschraube 10 x 13 So würde beispielsweise ein wirres durcheinander bei der Ausgabe erscheinen. Ich möchte dieses allerdings in geordneter Reihenfolge haben also so: - Holzschraube 10 x 13 - Holzschraube 10 x 120 Ist das überhaupt möglich mit einer SQL-Abfrage? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 19. Juli 2016 Teilen Geschrieben 19. Juli 2016 Kommt darauf an. Wenn alle deine Texte dem gleichen Muster folgen dann ja. Also immer Text - Leerzeichen - Größe1 - ... Dann kannst du auch nach Teilstrings sortieren. Also ein order by left([String], charindex(' ', [String]), ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DashDash Geschrieben 19. Juli 2016 Teilen Geschrieben 19. Juli 2016 (bearbeitet) Klar ist das möglich. Die Frage ist ob das ein Problem ist, das man mit SQL angehen sollte. Ich sehe spontan mehrere Möglichkeiten, zu aller erst musst du die Werte die dir wichtig sind alleine kriegen (damit du darauf sortieren kannst). Das kannst du, wie z.B. Enno schon beschrieben hat machen. Du könntest diese Daten z.B. auch in eine temporäre Tabelle oder in einen View packen - das bedeutet zwar am Anfang mehr Arbeit.. wird dir aber letztendlich das abfragende Query sehr erleichtern. Die Alternative ist, dass man sich innerhalb der Applikation alle Daten holt und die split und sortier Logik dann dort implementiert, was wesentlich einfacher sein sollte. Die eigentliche Lösung ist aber, nicht mit diesen Daten rum zu hantieren sondern dir die Zeit zu nehmen diese Daten ordentlich zu normalisieren. Alleine dass du dir die Frage stellst, is eigentlich ein "smell" dafür, dass die Daten nicht ordentlich normalisiert sind :-) Bearbeitet 19. Juli 2016 von DashDash Enno reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
allesweg Geschrieben 19. Juli 2016 Teilen Geschrieben 19. Juli 2016 Bei dem Beispiel würde doch ein "order by ... desc" reichen? Oder sieht das erweiterte Beispiel (mit unsinnigen Zahlen) so aus: - Holzschraube 8 x 4 - Holzschraube 8 x 12 - Holzschraube 10 x 8 - Holzschraube 10 x 13 - Holzschraube 10 x 120 - Holzschraube 10 x 130 Dann greifen die Lösungen der Beiden vor mir. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
RipperFox Geschrieben 19. Juli 2016 Teilen Geschrieben 19. Juli 2016 Wenn man Zahlen in Textfeldern alphabetisch sortiert kommt natürlich sowas raus: Artikel Größe 1 Artikel Größe 1000 Artikel Größe 111 Artikel Größe 2 Hier könnte man mit Vornullen als Konvention arbeiten, dann wird nach alphabetischer Sortierung sowas draus: Artikel Größe 0001 Artikel Größe 0002 Artikel Größe 0111 Artikel Größe 1000 Man könnte es auch wie @allesweg machen (zwei Teilstrings als Parameter für ORDER BY, ggf. automatisch Vornullen kann man mal mittels z.B. RIGHT("0000" + Zahl, 4) machen). Aber eigentlich hat @DashDash vollkommen recht - ein Zerpflücken von Text zum Sortieren macht man vllt. mal beim Import von Fremddaten aber man möchte solche "Kraut-und-Rüben-Felder" eigentlich nicht in der DB haben. allesweg reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 19. Juli 2016 Autor Teilen Geschrieben 19. Juli 2016 Wir werden dann wohl ein anderweitiges Feld in der DB erstellen und dieses vernünftig trennen -.- Denke das ist dann auch die beste und sauberste Lösung. Enno reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DashDash Geschrieben 19. Juli 2016 Teilen Geschrieben 19. Juli 2016 (bearbeitet) Hört sich gut an. Größen sind tricky, weil die nicht unbedingt standardisiert sind.. jedes Land hat ihre eigenen größen und man kann in der Regel nicht von dem Größenraster eines Artikels auf einen anderen Artikel übertragen. Ich würde das ganze warscheinlich etwas komplizierter angehen. Anfangen würde ich mit der Definition einer Größenraster Tabelle, die hätte eine Referenz auf verschiedene Größen und einen sortkey. Eine Größe wäre erstmal nur als Name definiert (wo man später noch mehr Felder hinzufügen kann). Die Artikel würden dann eine Größe referenzieren. Wenn du sortieren möchtest, müsstest du über die Größe zum Größenraster hinjoinen und könntest dann sortieren anhand des sort keys. Der Vorteil ist, das du dann auch andere Größen für allerlei Artikel ordentlich sortieren kannst - weil es eben nur innerhalb eines Artikel Größenrasters sortierst. Wenn du alle Artikel sortierst, müsstest du doppelt sortieren nämlich einfach z.B. auf dem Artikel name und dann auf dem sortkey innerhalb des Größenrasters. Das ganze hier stützt sich auf die Annahme, dass ihr nicht ausschließlich Schrauben nutzt wo dasselbe Größenraster genommen wird. Das ganze soll natürlich nur als Denkanstoß für dich dienen :-) Bearbeitet 19. Juli 2016 von DashDash Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 19. Juli 2016 Teilen Geschrieben 19. Juli 2016 vor 2 Stunden schrieb murat1895: Wir werden dann wohl ein anderweitiges Feld in der DB erstellen und dieses vernünftig trennen -.- Denke das ist dann auch die beste und sauberste Lösung. So eine Art "SortOrder" und dann "ORDER BY SortOrder ASC"? Wärst nicht der erste, der sowas macht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 19. Juli 2016 Autor Teilen Geschrieben 19. Juli 2016 vor 52 Minuten schrieb Goulasz: So eine Art "SortOrder" und dann "ORDER BY SortOrder ASC"? Wärst nicht der erste, der sowas macht. Ja, später dann auf die neuen Spalte mit den entsprechenden Attributen, also länge, breite, gewicht usw. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 19. Juli 2016 Teilen Geschrieben 19. Juli 2016 Wenn es in deiner DB nicht nur Holzschrauben verschiedener Größe gibt (dann wäre aber auch die Angabe "Holzschraube" sinnlos), sondern auch andere Produkte, dann würde ich auch im Sinne der Normalisierung Produkt und Bemaßung trennen. Idealerweise, wenn dein DBMS sowas kann, wäre dann die Bemaßung ein Geometrie-Objekt. Gruß Martin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 20. Juli 2016 Autor Teilen Geschrieben 20. Juli 2016 Das Problem ist nicht meine DB, sondern die des ERP-Systems... Ich weiß echt nicht was die sich damals dabei Gedacht haben... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DashDash Geschrieben 20. Juli 2016 Teilen Geschrieben 20. Juli 2016 Und du möchtest/kannst das ERP System nicht anpassen? Dann brauchst du das Query nur für regelmäßige/ad hoc reports? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 20. Juli 2016 Teilen Geschrieben 20. Juli 2016 Was ist denn das für ein DBMS hinter dem ERP System? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 20. Juli 2016 Teilen Geschrieben 20. Juli 2016 2te Frage, was is denn das für nen ERP System? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.