sql >> データベース >  >> RDS >> Mysql

クエリでのANSI1992JOINとCOMMAの混合

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

    お役に立てば幸いです。



    1. PostgreSQL/NodeJSを使用して結果の配列としてJOINテーブルを取得します

    2. リンクサーバーのOLEDBプロバイダーMicrosoft.Jet.OLEDB.4.0のインスタンスを作成できませんnull

    3. SQLDeveloperアイコン

    4. macOSにPostgreSQLをインストールする方法