Hallo,
ich habe zwei Tabellen:
produkte (id, name, gruppe, rank)
und produktverkauf (id, produktID, datum, preis)
Um eine aktuelle preisliste der Produkte zuerstellen
starte ich dezeit 2 bzw. 1+n Query's:
pseudo:
erg1 = SELECT id,name,beschreibung,gruppe,steuer FROM produkte WHERE status = '1' ORDER BY p.gruppe, p.rank
while $erg1
{
erg2 = SELECT preis FROM produktverkauf WHERE produktID = 'erg1['id']' ORDER BY datum DESC LIMIT 0,1
NAME: erg1['name'] - PREIS: erg2['preis']
}
Wie kann ich die n-Abfragen zu einer Abfrage umbauen?
Das habe ich bis jetzt:
SELECT p.id,p.name,p.beschreibung,p.gruppe,p.steuer FROM produkte p LEFT JOIN produktverkauf v ON p.id = v.produktID WHERE p.status = '1' && p.gruppe != 16 GROUP BY v.produktID ORDER BY p.gruppe, p.rank
Probleme bereitet mir die ORDER BY Klausel.
Wie kann ich festlegen, dass 'produktverkauf' nach datum DESC, also der neuste Preis genommen wird, aber tabelle 'produkte' bzw. das Gesamtergebnis jedoch nach p.gruppe, p.rank sortiert wird?
ich habe zwei Tabellen:
produkte (id, name, gruppe, rank)
und produktverkauf (id, produktID, datum, preis)
Um eine aktuelle preisliste der Produkte zuerstellen
starte ich dezeit 2 bzw. 1+n Query's:
pseudo:
erg1 = SELECT id,name,beschreibung,gruppe,steuer FROM produkte WHERE status = '1' ORDER BY p.gruppe, p.rank
while $erg1
{
erg2 = SELECT preis FROM produktverkauf WHERE produktID = 'erg1['id']' ORDER BY datum DESC LIMIT 0,1
NAME: erg1['name'] - PREIS: erg2['preis']
}
Wie kann ich die n-Abfragen zu einer Abfrage umbauen?
Das habe ich bis jetzt:
SELECT p.id,p.name,p.beschreibung,p.gruppe,p.steuer FROM produkte p LEFT JOIN produktverkauf v ON p.id = v.produktID WHERE p.status = '1' && p.gruppe != 16 GROUP BY v.produktID ORDER BY p.gruppe, p.rank
Probleme bereitet mir die ORDER BY Klausel.
Wie kann ich festlegen, dass 'produktverkauf' nach datum DESC, also der neuste Preis genommen wird, aber tabelle 'produkte' bzw. das Gesamtergebnis jedoch nach p.gruppe, p.rank sortiert wird?
Kommentar