Tach!
Klassische Lösung: Self-Join vom GROUP-Konstrukt mit der Tabelle:
SELECT trm1.min_tag_uhr, trm2.ort FROM (SELECT adress_id, MIN( CONCAT( tag, ' ', uhr )) AS min_tag_uhr FROM termine GROUP BY adress_id) trm1 JOIN termine trm2 ON trm1.adress_id = trm2.adress_id AND trm1.min_tag_uhr = CONCAT(trm2.tag, ' ', trm2.uhr)
Dedlfix würde den Selfjoin vermutlich sofort durch einen Subselect ersetzen. Ich glaube, das sähe dann so aus (ungetestet):
Ich würde vor allem das CONCAT() zu ersetzen versuchen. Denn solche Konstrukte, die für jeden Datensatz erst berechnet werden müssen, bevor sie ausgewertet werden können, sind Index-Killer.
SELECT trm1.min_tag_uhr, trm2.ort
FROM (SELECT adress_id, tag, uhr
FROM termine
GROUP BY adress_id
ORDER BY tag, uhr
LIMIT 1
) trm1
JOIN termine trm2
ON trm1.adress_id = trm2.adress_id
AND trm1.tag = trm2.tag
AND trm1.uhr = trm2.uhr
Inwieweit das funktioniert, kann ich nicht sagen, weil immernoch nach Spalten selektiert wird, nach denen nicht gruppiert wird, und sie so undefinierte Ergebnisse liefern.
dedlfix.