このリンク
によると 、結合を構築するときに両方の表記法を混同しないでください。 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
、最終結果はデカルト積になります。改訂したい場合があります。
お役に立てば幸いです。