Volgens deze link
, moet u beide notaties niet door elkaar halen bij het opbouwen van joins. De komma die je gebruikt om lid te worden van memebers as m, telephone as t
, en de daaropvolgende oproepen naar inner join
, veroorzaken de onbekende kolomfout.
Om ermee om te gaan, gebruik CROSS/INNER/LEFT JOIN
in plaats van komma's.
Voorheen hadden de komma-operator (,) en JOIN beide dezelfde prioriteit, dus de join-expressie t1, t2 JOIN t3 werd geïnterpreteerd als ((t1, t2) JOIN t3). JOIN heeft nu een hogere prioriteit, dus de uitdrukking wordt geïnterpreteerd als (t1, (t2 JOIN t3)). Deze wijziging is van invloed op instructies die een ON-clausule gebruiken, omdat die clausule alleen kan verwijzen naar kolommen in de operanden van de join, en de verandering in prioriteit verandert de interpretatie van wat die operanden zijn.
Voor pedagogische doeleinden voeg ik de vraag toe zoals deze, denk ik, zou moeten zijn:
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
Aangezien je niet lid wordt van t
en m
, het eindresultaat zal een cartesiaans product zijn; misschien wilt u dat het wordt herzien.
Ik hoop dat het heeft geholpen.