Thread Inner Join & Subselects
(0 answers)
Opened by Froschpopo at 2007-11-30 23:20
Ich habe hier eine Verständnisfrage:
Code: (dl
)
SELECT users.name, (SELECT MAX(id) FROM photos WHERE user_id = a.user_id) AS letztes_foto FROM users, photos WHERE photos.user_id = users.user_id GROUP BY users.name Irgendwie dauert diese Abfrage trotz optimaler Verwendung von Indexen arschig lang. habe Alternativ auch noch folgendes probiert: Code: (dl
)
SELECT users.name, (SELECT id FROM photos WHERE user_id = a.user_id ORDER BY datum DESC LIMIT 1) AS letztes_foto FROM users, photos WHERE photos.user_id = users.user_id GROUP BY users.name Das dauert aber genauso lang. Superschnell hingegen ist: Code: (dl
)
SELECT users.name, (SELECT id FROM photos WHERE user_id = a.user_id ORDER BY datum DESC LIMIT 1) AS letztes_foto FROM users, photos LIMIT 10 Was ist hier los? Sinn und Zweck: Ich möchte alle User anzeigen, die ein Foto haben. Dann brauche ich noch die ID des aktuellsten Fotos. Das Problem liegt ganz offensichtlich an GROUP BY. Ich verstehe nur nicht, WARUM? |