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

on句の不明な列{0}

    Puzzlesだと思います PuzzleID列がありません 。単にIDと呼ばれる列ですか そのテーブルで?またはPuzzle_ID

    SHOW CREATE TABLE Puzzlesを実行する必要があります そのテーブルの現在の定義を確認します。

    引用が欠落していることが原因である場合があります:

    ... ON `Puzzles.PuzzleID` ...
    

    上記は文字通り「Puzzles.PuzzleID」という名前の列を探します 、"つまり、16文字の長さの列名で、中央にドットがあります。

    @Bellは、コンマスタイルの結合とSQL-92スタイルの結合が混在していることに気付くと賞に値します。気づかなかった!

    結合操作の優先順位がおそらく混乱を引き起こしているため、同じクエリで両方を使用しないでください。

    JOIN キーワードの優先順位が高くなります。テーブル式を確認できるようにクエリを簡略化すると、次のように評価されます。

    SELECT . . . 
    FROM (Puzzles JOIN PuzzleCategories),
    (Clients JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages)
    

    問題は、PuzzleUsagesへの結合です。 Puzzles.PuzzleIDと比較する必要があります 列ですが、優先順位の問題があるため、できません。この列は、最後のJOINのオペランドの一部ではありません 。

    括弧を使用してエラーを解決し、テーブル式の優先順位を明示的にオーバーライドできます(算術式で括弧を使用する場合と同じように):

    SELECT . . . 
    FROM Puzzles JOIN (PuzzleCategories, Clients)
    JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages
    

    または、SQL-92 JOINを使用することもできます 一貫して構文。これがより明確であるという@Bellに同意します。

    SELECT . . . 
    FROM Puzzles JOIN PuzzleCategories JOIN Clients
    JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages
    


    1. android生体認証USB指紋認証チュートリアル

    2. Heroku MySQL Auto Increment

    3. テキストファイルからmysqlデータベースにデータをインポートする方法

    4. 1つの選択列の値を保存して、次の列に使用することは可能ですか?