Ich glaub ich habs
Code:SELECT Teilenummer ,Preis ,max(DISTINCT Datum) as Datum FROM Tabelle WHERE Datum <= 201102 GROUP BY Teilenummer, Preis
Hallo TP,
ich hab ein Problem mit einem SQL Statement. Ich hab nämlich überhaupt keine Ahnung, wie ich starten soll
(Das macht es mir auch schwer bei Google oder hier was zu finden).
Ich habe eine Tabelle
Teilenummer Preis Datum abc 10,50 201101 abc 11,00 201105 bcd 5,39 201101
Nun möchte ich diese Tabelle abfragen. Und zwar habe ich ein Datum, zu dem ich den gültigen Preis (also den mit dem nächst kleinerem oder gleichem Datum) für alle Teilenummern haben möchte.
Ich hab es schon mit GROUP BY und MAX() versucht, komme aber nicht weiter.
Ergebnis soll so aussehen:
WHERE Datum <= 201102
Teilenummer Preis Datum abc 10,50 201101 bcd 5,39 201101
WHERE Datum <= 201105
Teilenummer Preis Datum abc 11,00 201105 bcd 5,39 201101
Danke wer auch immer eine Idee hat!
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
Ich glaub ich habs
Code:SELECT Teilenummer ,Preis ,max(DISTINCT Datum) as Datum FROM Tabelle WHERE Datum <= 201102 GROUP BY Teilenummer, Preis
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
Nein Doch nicht! Da der Preis unterschiedlich ist, zeigt er trotzdem beide Felder an...![]()
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
Next try in meinem Selbstgespräch...
Ich glaub so gehts.
Ich nutze eine abhängige Unterabfrage auf die selbe Tabelle, welche nur einen Rückgabewert hat.PHP-Code:SELECT Teilenummer
,Preis
,Datum
FROM Tabelle
WHERE Datum IN (SELECT TOP(1) Datum FROM Tabelle WHERE Datum <= 201106 ORDER BY Datum desc)
In meinen ersten Tests schein es zu gehen. Nun geht es an die grosse Datenbank...
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
OK, auch falsch!
Da die zweite Abfrage nur das Grösste Datum sucht, wendet es dieses auch beim Durchlauf der bcd Teilenummern an und da diese dann nicht gleich diesem Datum ist, wird diese nicht ausgegeben!
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
Nun aber... und man bemerke die Entwicklungskurve :-)
Ich war ganz nah dran! Druch das zuweisen der Namen one und two für die beiden Abfragen, ist es möglich die Ergebnisse in der UNterabfrage zu trennen!PHP-Code:SELECT one.Teilenummer
,one.Preis
,one.Datum
FROM Tabelle as one
WHERE one.Datum IN (SELECT TOP(1) two.Datum FROM Tabelle as two WHERE two.Datum <= 201106 AND two.Teilenummer = one.Teilenummer ORDER BY two.Teilenummer desc)
ORDER BY one.Datum desc
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)