0

次のクエリは常に #1054 - 不明な列 'T_RELATIF_SESS.REL_COM_ID' in 'on clause' を返します

SELECT
`T_FORMATIONS`.`FOR_ID`, 
`T_FORMATIONS`.`FOR_TITRE`, 
`T_FORMATIONS`.`FOR_NIVEAU`, 
`T_FORMATIONS`.`FOR_MAX_PART`, 
`T_RELATIF_SESS`.`REL_COM_ID`, 
`T_RELATIF_SESS`.`REL_SES_ID`,
`T_SESSIONS`.`SES_ID`, 
`T_SESSIONS`.`SES_TITRE`, 
`T_SESSIONS`.`SES_TYPE`, 
`T_SESSIONS`.`SES_ADRESSE`, 
`T_SESSIONS`.`SES_NPA`, 
`T_SESSIONS`.`SES_LIEU`, 
`T_SESSIONS`.`SES_PRIX_SPECIAL`, 
`T_SESSIONS`.`SES_VAL_PRIX_SPECIAL`, 
`T_SESSIONS`.`SES_PRIX_SPEC_EXP`, 
`T_SESSIONS`.`SES_SUPP_COURS_INCL`, 
`T_SESSIONS`.`SES_SUPP_COURS_ADD`, 
`T_SESSIONS`.`SES_PRIX_SUPP_COURS_ADD`, 
`T_SESSIONS`.`SES_HORAIRE_SPECIAL`, 
`T_SESSIONS`.`SES_REMARQUES`, 
`T_SESSIONS`.`SES_REC_ID`, 
`T_COURS`.`COU_ID`, 
`T_COURS`.`COU_DATE`, 
    (SELECT `COU_DATE` FROM `T_COURS` WHERE `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` ORDER BY `COU_DATE` ASC LIMIT 1) AS `PREMIERCOURS`, 
    (SELECT `COU_DATE` FROM `T_COURS` WHERE `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` ORDER BY `COU_DATE` DESC LIMIT 1) AS `DERNIERCOURS` 
FROM `T_COURS` 
INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 
INNER JOIN `T_SESSIONS` ON `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` 
INNER JOIN `T_FORMATIONS` ON `T_SESSIONS`.`SES_FOR_ID` = `T_FORMATIONS`.`FOR_ID` 
WHERE `T_COMMANDES`.`COM_ID`=19

追加する前に、このクエリは正常に機能しました

INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 

WHERE `T_COMMANDES`.`COM_ID`=19

T_RELATIF_SESS「T_SESSIONS」と「T_COMMANDES」と呼ばれるテーブル間の連想テーブルです。クエリを何度も書き直そうとしましたが、それでもこのエラーが発生し、その理由が本当にわかりません。すべてのフィールドがデータベースに存在します。

簡単なことかもしれませんが、本当に頭が痛くなります。誰かが私に手を差し伸べたり、私が間違っていることを説明したりできますか? それは非常にありがたいです!どうもありがとうございました!

4

3 に答える 3

1

あなたの説明から、スクリプトなしでスクリプトを実行しようとします

INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 

それは機能していますが、そのスクリプトでは機能していませんか? 最初の内部結合で、テーブル (T_COMMANDES) を次に結合するテーブル (T_RELATIF_SESS) と結合しようとしているので、順番に作成してみてください。

だから試してください:

INNER JOIN `T_SESSIONS` ON `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` 
INNER JOIN `T_FORMATIONS` ON `T_SESSIONS`.`SES_FOR_ID` = `T_FORMATIONS`.`FOR_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 
INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID`
于 2013-03-19T07:58:39.117 に答える
1

を使用しているため、結合を追加した後、テーブルの順序が台無しになります。結合でINNER JOINフィールドが表示される限り、好きな場所でテーブルを宣言できます。それでも同じ結果が得られます。

この問題を解決するには、これらの新しい結合を結合の下部に配置します。

FROM    T_COURS 
        INNER JOIN T_SESSIONS 
            ON T_COURS.COU_SES_ID = T_SESSIONS.SES_ID 
        INNER JOIN T_FORMATIONS 
            ON T_SESSIONS.SES_FOR_ID = T_FORMATIONS.FOR_ID
        INNER JOIN T_RELATIF_SESS 
            ON T_SESSIONS.SES_ID = T_RELATIF_SESS.REL_SES_ID 
        INNER JOIN T_COMMANDES 
            ON T_RELATIF_SESS.REL_COM_ID = T_COMMANDES.COM_ID 

エラー メッセージ:Unknown column 'T_RELATIF_SESS.REL_COM_ID' in 'on clause'がスローされた理由は、 と結合T_COURSするときT_COMMANDESに column T_RELATIF_SESS. 結合の下部でREL_COM_IDテーブルを宣言しているため、まだ表示されていません。T_RELATIF_SESS

于 2013-03-19T07:59:06.613 に答える
0

T_RELATIF_SESSテーブルに参加する前にアクセスしようとしました。T_COMMANDEST_RELATIF_SESSに参加する必要がありT_RELATIF_SESSますT_SESSIONS

SELECT
`T_FORMATIONS`.`FOR_ID`, 
...
FROM `T_COURS` 
INNER JOIN `T_SESSIONS` ON `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` 
INNER JOIN `T_FORMATIONS` ON `T_SESSIONS`.`SES_FOR_ID` = `T_FORMATIONS`.`FOR_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 
INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID` 
WHERE `T_COMMANDES`.`COM_ID`=19
于 2013-03-19T08:01:13.330 に答える