mySQL: JOIN und ORDER BY

mySQL: JOIN und ORDER BY

am 23.12.2005 19:27:31 von mailagent

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?

Re: mySQL: JOIN und ORDER BY

am 27.12.2005 10:46:27 von Dominik Echterbruch

Malte Hüner wrote:
> 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?

Indem du es genau so angibst. Also:
ORDER BY v.datum DESC, p.gruppe, p.rank

Oder anders rum - ist völlig egal. Was natürlich nicht
ganz stimmt, das Ergebnis wird etwas anders aussehen. Aber funktionieren
tut's in jedem Fall.


Grüße,
Dominik
--
MonstersGame - Die Schlacht zwischen Vampiren und Werwölfen
http://spielwelt6.monstersgame.net/?ac=vid&vid=3018786