Mysql
 sql >> Database >  >> RDS >> Mysql

Mescolare ANSI 1992 JOIN e COMMA in una query

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.