Ifølge dette link
, bør du ikke blande begge notationer, når du bygger joins. Det komma, du bruger til at tilslutte memebers as m, telephone as t
, og de efterfølgende opkald til inner join
, udløser den ukendte kolonnefejl.
For at håndtere det, brug CROSS/INNER/LEFT JOIN
i stedet for kommaer.
Tidligere havde kommaoperatoren (,) og JOIN begge samme forrang, så join-udtrykket t1, t2 JOIN t3 blev fortolket som ((t1, t2) JOIN t3). JOIN har nu højere forrang, så udtrykket fortolkes som (t1, (t2 JOIN t3)). Denne ændring påvirker sætninger, der bruger en ON-sætning, fordi den sætning kun kan henvise til kolonner i operanderne af joinforbindelsen, og ændringen i forrang ændrer fortolkningen af, hvad disse operander er.
Af pædagogiske formål tilføjer jeg forespørgslen, som den, jeg synes, burde være:
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
Da du ikke tilmelder dig t
og m
, det endelige resultat vil være et kartesisk produkt; du vil måske have den revideret.
Jeg håber, det hjalp.