Moin!
Wenn ich
$sql = "SELECT a.id, a.name, b.text FROM table1 a LEFT JOIN table2 b ON a.id=b.id ORDER by a.id DESC Limit 20 ";
ausführe kommmt
andreas dddddddddd
andreas 5555555555
andreas zzzzzzzzzz
bernd
carmen ggggggggggg
carmen fffffffffff
detelf
Die NULL-Werte bei Bernd und Detelf hast du unterschlagen...
Wenn ich
$sql = "SELECT a.id, a.name, b.text FROM table1 a LEFT JOIN table2 b ON a.id=b.id GROUP BY b.id ORDER by a.id DESC Limit 20 ";
ausführe kommmt
andreas dddddddddd
carmen gggggggggggWas ja schon mal gut ist, doch ich möchte gerne folgendes Ergebnis haben:
andreas dddddddddd
bernd
carmen ggggggggggg
detelf
Warum? Warum genau dddddddddd bei Andreas, warum genau ggggggggggg bei Carmen? In deinem Query machst du keine Vorschriften, genau diese Infos rauszubekommen, und MySQL lässt das leider zu, ohne dir zu verraten (außer in der Doku), dass beim undefinierten Gruppieren von Spalten irgendein zufälliger Wert gewählt wird, der obendrein bei Änderungen in der DB auch noch wechseln könnte. Dass bei dir dort zufällig "der erste" Wert drinsteht, ist nicht garantiert.
Dann: Durch deine Bedingung zum JOIN ist definiert: a.id == b.id. Du gruppierst nach b.id - warum gruppierst du nicht nach a.id? Die ist schließlich gleich.
- Sven Rautenberg