where clause is ambiguous

エラー

目次一覧

 状態:-  閲覧数:1,301  投稿日:2021-08-29  更新日:2021-08-29  
問題発生 / エラーメッセージ

悩んだ点 / 原因判明 / 今回学んだ教訓


問題発生 / エラーメッセージ

 閲覧数:132 投稿日:2021-08-29 更新日:2021-08-29 

問題発生


テーブル結合追加したら、エラー発生

エラーメッセージ


'public' in where clause is ambiguous

エラー原因


結合追加したテーブルに'public' カラムがあり、既存テーブルにも'public' カラムがあったため、テーブル名指定が必要だった

悩んだ点 / 原因判明 / 今回学んだ教訓

 閲覧数:147 投稿日:2021-08-29 更新日:2021-08-29 

悩んだ点


結合条件ではテーブル名を指定しているのに、なぜエラー表示されるのか分からず悩みました
LEFT JOIN elem el ON (a.id = el.entry_id)


原因判明


テーブル名指定が必要なのは、結合条件ではなく、WHERE指定の方でした

従来
全テーブルでpublicカラムは一つしかなかったので、下記でよかった
WHERE public = 1


変更点
今回結合追加するテーブルにpublicカラムがあったため、aテーブル指定追加が必要になりました
WHERE a.public = 1


今回学んだ教訓


「where clause is ambiguous」エラー原因は、クエリの中でどのテーブルのカラムか指定していないことですが、該当箇所は結合式だけとは限りません。
WHERE式もよくよく確認しましょう。


SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry

コメント投稿(ログインが必要)