Според тази връзка
, не трябва да смесвате и двете нотации, когато създавате съединения. Запетаята, която използвате, за да се присъедините към memebers as m, telephone as t
и последващите извиквания към inner join
, задействат неизвестната грешка в колоната.
За да се справите с него, използвайте CROSS/INNER/LEFT JOIN
вместо запетаи.
Преди и операторът запетая (,) и JOIN имаха едно и също предимство, така че изразът за свързване t1, t2 JOIN t3 се интерпретираше като ((t1, t2) JOIN t3). Сега JOIN има по-висок приоритет, така че изразът се интерпретира като (t1, (t2 JOIN t3)). Тази промяна засяга изрази, които използват клауза ON, тъй като тази клауза може да се отнася само до колони в операндите на съединението, а промяната в приоритета променя интерпретацията на това какво представляват тези операнди.
За педагогически цели добавям заявката така, както мисля, че трябва да бъде:
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
Тъй като не се присъединявате към t
и m
, крайният резултат ще бъде декартово произведение; може да искате да бъде преработен.
Надявам се, че помогна.