![]() |
Ausgaben sortieren nach
Hi Leute,
habe eine MySQL-Datenbank bei einem Provider in gebrauch. Dort werden meinerseits Kundendaten gespeichert. Nun möchte ich die Daten nach der Auftragsnummer sortieren lassen. Ich verwenden folgende Abfrage:
SQL-Code:
Die Auftragsnummer sieht so aus 'nummer(phpDatum(nicht formatiert))/feste Zahl/AuftragNr'.
select * from Tabelle where auftragsnummer like'/864/%';
Das ganze wird als string in die Datenbank übergeben. Die Abfrage wird ohne Fehlermeldung ausgeführt, jedoch erhalte ich kein Ergebnis! Ich verstehe meine Abfrage so. Zeige mir alle Spalten von Tabelle wo die Auftragsnummer ähnlich 'Backslash 864 Backslash egal'; ist. Wo ist mein Denkfehler? |
Re: Ausgaben sortieren nach
Die Abfrage sollte wohl so aussehen:
SQL-Code:
Denn sonst suchst du nur nach Nummern, die mit "/864" beginnen und einen beliebigen Text am Ende haben, so wie ich es verstanden habe, steht jedoch davor noch ein beliebiger Text.
SELECT * FROM Tabelle WHERE auftragsnummer LIKE '%/864'
Um die Ausgabe zu Sortieren, einfach "ORDER BY" hinten anhängen, bspw. so (weiß ja nicht wonach):
SQL-Code:
MfG Pr0g
SELECT * FROM Tabelle WHERE auftragsnummer LIKE '%/864' ORDER BY id;
|
Re: Ausgaben sortieren nach
Hallo Pr0g
danke erst einmal für deine Antwort. Die Auftragsnummer sieht so aus 'Nummer(phpDatum(nicht formatiert))/feste Zahl/AuftragNr'. Ich suche nach der Auftragsnummre wobei der erste Teil bis zum ersten Slash, sowie der zweite Teil bis zum zweiten Slash (welcher eine feste Zahl ist) mir egal sind. Wichtig ist mir der dritte Teil, also nach dem zweiten Slash('AuftragNr'). Dies möchte ich sortiert in aufsteigender Reihenfolge ausgegeben haben. |
Re: Ausgaben sortieren nach
Hi steppo,
nachdem dir die ersten Teile egal sind, muss das Statement wie bereits erwähnt
SQL-Code:
lauten.
SELECT * FROM Tabelle WHERE auftragsnummer LIKE '%/864'
Wenn nun nach der Auftragsnummer sortiert werden soll, dann lautet das Statement so:
SQL-Code:
Falls absteigend sortiert werden soll, musst du statt ASC einfach DESC verwenden.
SELECT * FROM Tabelle WHERE auftragsnummer LIKE '%/864' ORDER BY auftragsnummer ASC
Ich hoffe ich habe dich richtig verstanden.. :-? Greetz alcaeus |
Re: Ausgaben sortieren nach
Ich habe es mit ORDER BY, sowie ohne ORDER BY versucht. Beides löst keinen Fehler aus, bringt jedoch auch kein Ergebnis.
Ich möchte nach dem letzten drittel sortieren lassen, also nach AuftragNr. Der rest des strings soll nicht beachtet werden. Daher meine Frage: Wo liegt mein Fehler? |
Re: Ausgaben sortieren nach
hallo steppo,
baust du den sqlstring zur laufzeit zusammen, dann solltest du uns mal den quellcode zeigen, wie du das machst. raik edit:ich brauche einen neuen rechner, oder besser tastatur :mrgreen: |
Re: Ausgaben sortieren nach
Ich greife über phpMyAdmin 2.2.3
auf die Datenbank im Web zu und will lediglich die oben genannte Abfrage angezeigt bekommen. |
Re: Ausgaben sortieren nach
Hallo steppo, wenn ich dich richtig verstanden habe, ist der fixe Teil in der Mitte, der gesuchte Wert am Ende.
ich würde das so abfragen:
SQL-Code:
select * from Tabelle where auftragsnummer like'%/864/%';
|
Re: Ausgaben sortieren nach
o.K. Leute, habe mich wohl nicht richtig ausgedrückt!
Der erste Teil variriert, ist für mich jedoch nicht relevant, also egal. Der zweite Teil ist fix, immer 864. Der dritte Teil ist jener der für mich interessant ist und der auch aufsteigend sortiert werden soll. Das heißt Ihr habt alle mit euren Antworten recht. Die Abfrage sollte so aussehen:
SQL-Code:
ALso wie oben beschrieben:
select * from Tabelle where auftragsnummer like'%/864/';
Bis zum ersten Slash egal (%), zweiter Teil = Fix(864) dritter Teil =gesuchter Teil(AuftragsNr). Das Problem ist, dass diese Abfrage ausgeführt wird (keine Fehlermeldung von Sql) jedoch kein Ergebnis ausgegeben wird! |
Re: Ausgaben sortieren nach
Normalerweise kannst du mit Order By sortieren. Allerdings hast du hier das Problem, dass du in einem Tabellenfeld mehrere Informationen abgespeichert hast. Dies entspricht einem Schlechten Datenbankdesign. Wenn man es richtig machen möchte, müsstest du für jede Information eine eigene Spalte machen (also auch eine wo die Auftragsnr alleine steht).
SQL-Code:
Da fehlt doch noch die Auftragsnummer.
select * from Tabelle where auftragsnummer like'%/864/'
Richtig wäre vermutlich irgendwas wie:
SQL-Code:
select * from Tabelle where auftragsnummer like '%/864/'+gesuchteAuftragsNr
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz