dedlfix: Unterabfrage lieferte mehr als einen Datensatz zurück - was sonst?

Beitrag lesen

Tach!

ich habe

SELECT *,group_concat(idv)
FROM `xlieder`
left join xjvl on xjvl.idl=xlieder.id
where xlieder.id=6
group by xjvl.idv
order by xlieder.id

und bekomme

id|Aufsteigend|1|title|idv|idl|group_concat(idv) 6|eieiDeius|1|6|1 6|eieiDeius|2|6|2

Fehler meinerseits. Das Gruppieren muss über idl erfolgen, das GROUP_CONCAT() aber weiterhin über idv.

Die Abfrage lässt sich auch ohne Join stellen, dafür mit Corellated Subquery. Auf diese Weise entfällt, dass ein kartesiches Produkt gebildet wird, das man dann wieder rauskürzen muss. Und meiner Meinung nach drückt das auch besser/direkter aus, was man eigentlich für ein Ergebnis haben möchte.

SELECT *, (SELECT GROUP_CONCAT(idv) FROM xjvl WHERE xjvl.idl = xlieder.id)
FROM xlieder
WHERE EXISTS(SELECT * FROM xjvl WHERE xjvl.idl = xlieder.id)

Das WHERE ist nur drin, um Lieder ohne Verknüpfung in xjvl nicht Ergebnis zu haben.

dedlfix.