Według ten link
, nie należy mieszać obu notacji podczas tworzenia złączeń. Przecinek, którego używasz, aby dołączyć do memebers as m, telephone as t
i kolejne wywołania inner join
, wywołują błąd nieznanej kolumny.
Aby sobie z tym poradzić, użyj CROSS/INNER/LEFT JOIN
zamiast przecinków.
Wcześniej operator przecinka (,) i JOIN miały ten sam priorytet, więc wyrażenie sprzężenia t1, t2 JOIN t3 było interpretowane jako ((t1, t2) JOIN t3). Teraz JOIN ma wyższy priorytet, więc wyrażenie jest interpretowane jako (t1, (t2 JOIN t3)). Ta zmiana dotyczy instrukcji, które używają klauzuli ON, ponieważ klauzula ta może odnosić się tylko do kolumn w operandach złączenia, a zmiana pierwszeństwa zmienia interpretację tego, czym te operandy są.
Ze względów pedagogicznych dodaję zapytanie, które moim zdaniem powinno wyglądać:
SELECT m.*, t.*
FROM memebers as m
JOIN telephone as t
JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
JOIN mitgliedTelephone as mt ON m.id = mt.memeber
Ponieważ nie dołączasz do t
i m
, wynik końcowy będzie produktem kartezjańskim; możesz chcieć, aby został poprawiony.
Mam nadzieję, że to pomogło.