Vinzenz Mai: Mysql left join problem

Beitrag lesen

Hallo

also, ich habe 2 Tabellen Liga (ID, name) und Clan_liga (ID, ligaID, clanID)

jetzt möchte ich für einen bestimmten Clan alle Ligen angezeigt bekommen und dazu ein hinweis, ob dieser CLan bereits bei der Liga registriert ist oder nicht

mein bisheriger Ansatz:
SELECT
liga.ID,
liga.name,
clan_liga.clanID,
(clan_liga.ID > 0) as isregistered
FROM
liga left join clan_liga on liga.ID = clan_liga.ligaID
WHERE
clan_liga.clanID = [hier clanID einsetzen]
GROUP BY
liga.ID
ORDER BY
liga.name ASC

ist eine typische MySQL-Schrott-Anweisung, die jedes andere Datenbankmanagementsystem richtigerweise als syntaktisch falsch zurückweist.

Du musst nach _allen_ Spalten gruppieren, auf die Du _keine_ Aggregatsfunktion anwendest. Du wendest keine Aggregatsfunktion an, also musst Du nach allen Spalten gruppieren. Noch viel einfacher ist es, die überflüssige GROUP-BY-Klausel einfach zu entfernen.

ID name clanID isregistered
1 ligaA null 0
2 ligaB 3 1
3 ligaC 3 1
4 ligaD null 0
5 ligaE null 0

ich hoffe jemand kann mir weiterhelfen!

Deine WHERE-Klausel macht Dir alles kaputt. Du möchtest Werte der "linken" Tabelle zugreifen, die NULL-Werte zurückliefern kann. Verschiebe die WHERE-Klausel daher in die JOIN-Bedingung.

Weiterhin halte ich es für möglich, dass Du die COALESCE-Funktion in Deiner berechneten Spalte "isregistered" verwenden möchtest.

Freundliche Grüße

Vinzenz