Secondo questo link
, non dovresti confondere entrambe le notazioni durante la creazione di join. La virgola che stai usando per unire memebers as m, telephone as t
e le successive chiamate a inner join
, stanno attivando l'errore di colonna sconosciuta.
Per affrontarlo, usa CROSS/INNER/LEFT JOIN
invece di virgole.
In precedenza, l'operatore virgola (,) e JOIN avevano entrambi la stessa precedenza, quindi l'espressione di join t1, t2 JOIN t3 veniva interpretata come((t1, t2) JOIN t3). Ora JOIN ha una precedenza più alta, quindi l'espressione è interpretata come (t1, (t2 JOIN t3)). Questa modifica riguarda le istruzioni che utilizzano una clausola ON, perché tale clausola può fare riferimento solo alle colonne negli operandi del join e la modifica della precedenza cambia l'interpretazione di quali sono quegli operandi.
A scopo pedagogico, aggiungo la query come, penso, dovrebbe essere:
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
Dal momento che non ti stai unendo a t
e m
, il risultato finale sarà un prodotto cartesiano; potresti volerlo rivedere.
Spero di esserti stato d'aiuto.