この記事を読むのに必要な時間は約 3 分です。
ERROR: missing FROM-clause entry for table
たまにやってる超個別記事
久しぶりのエラー紹介記事です!
Postgresql でこのエラーが出て困ったことはありませんか?
ERROR: missing FROM-clause entry for table
たまーに出てて、原因がわから無いけど気づいたら修正されてて、結局なんだったんだ?
みたいなエラーってありませんか?
今回、見事にあほなことしてて原因がわかりましたので紹介です。
SELECT AA.datetime FROM history AA left outer join history BB on AA.id=BB.id where EE.id='2019-01-14'
原因
まぁ、原因が分かった後ですから、私はみればわかるんですけどね。
わかっていない状況だと本当にカオスな状況のクエリを書いているのではないでしょうか?
このサンプルで出している図はとってもシンプルに書いているのでよく見ればこの図だけで
エラーの原因がわかりますよ
(´◉◞౪◟◉)
(´◉◞౪◟◉)
(´◉◞౪◟◉)
(´◉◞౪◟◉)
ほい!
答え合わせです。
原因は
EE.id=’2019-01-14′
です。
わかりますか?
きっとこれだけ見てもわからないとおもいますよ。
でも、こうやればわかります!
AA.id=BB.id where EE.id=’2019-01-14′
どうでしょうか?
答えは、EE がそもそも存在していないことですね!
存在しない仮想テーブルをwhere区に指定していることが原因でした。
同じエラーが出ている人はこのような感じで存在しないテーブルを指定していたり、
もしくは存在しているがカラムが存在しないような条件をしていしていないか確認してみましょう!
(´◉◞౪◟◉)
剽窃チェックをまとめました。
剽窃はやってはいけません。
じっくり見ればすぐわかります。
それらをわかりやすく解析してくれるチェッカーの特集です。
こちらより