Sebastian Fischer: order by Problem im join

Beitrag lesen

Ich habe in folgendem Join das Problem, dass mir nicht der aktuelle Preis ermittelt wird sondern ein beliebig alter Preis.

Was ich mir von dem Join erhoffe ist, dass mir der Besitzer der Produktliste ausgegeben wird (Prüfung ob berechtigt zur Anzeige), das die Produktdaten ausgegeben werden (für die Detailansicht) und das mir der niedrigste Preis und der aktuelle Preis ermittelt werden.

Verwendung finden 5 Tabellen:
tx_sfpricetracker_lists - verschiedene Produktlisten die von Usern gepflegt werden können
-- #uid, name, description, owner
tx_sfpricetracker_lists_products_mm - m:n Verknüpfung von Listen und Produkte
-- #uid_local, #uid_foreign
tx_sfpricetracker_products - Produkte die gepflegt werden können
-- #uid, name, description, producer, amount, link
tx_sfpricetracker_products_prices_mm - m:n Verknüpfung von Produkte zu Preise
-- #uid_local, #uid_foreign
tx_sfpricetracker_prices - einzel Preise
-- #uid, crdate, price

Für die Ausgabe der Detailansicht habe ich folgenden State erstellt, der mir aber wie bereits gesagt leider nicht den aktuellen Preis ausgibt.
SELECT
lists.owner,
products.*,
MIN(prices.price) AS lowestprice,
prices.price AS currentprice,
prices.crdate

FROM
tx_sfpricetracker_lists AS lists,
tx_sfpricetracker_lists_products_mm AS lp,
tx_sfpricetracker_products AS products,
tx_sfpricetracker_products_prices_mm AS pp,
tx_sfpricetracker_prices AS prices

WHERE

products.uid = 4
AND lists.owner = 1
AND lists.uid = lp.uid_local
AND products.uid = lp.uid_foreign
AND products.uid = pp.uid_local
AND prices.uid = pp.uid_foreign

GROUP BY products.uid
ORDER BY prices.crdate desc

Was mach ich da falsch, warum wird mir zwar der minimale Preis korrekt ausgegeben, aber nicht der aktuelle? Und was kann ich ändern damit es dennoch funktioniert?