Nucleusフォーラム (Nucleus(JP)フォーラム :: トピックを表示 - NP_ShowItem 特定アイテムを固定表示(Sticky表示)するための超シンプルなプラグイン) で話題に上がっていたMySQL5でのエラー。MySQL AB :: MySQL 5.0 Reference Manual :: 13.2.7.1 JOIN Syntaxあたりじゃないかと思ったり。SQLも英語もわからんので適当。全然見当はずれかもしれないので亜空間レス。
MySQL 5 以降では","の優先度が"LEFT JOIN"等より低く設定されているらしく、コンマでの結合と他の結合を混ぜて使用する場合は注意が必要とか何とか。
MySQL AB :: MySQL 5.0 Reference Manual :: 13.2.7.1 JOIN Syntaxの後半にあるPreviously, the comma operator
から始まる部分が該当する様子。
FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3)
みたいな文("節"か)は、MySQL 4だと
FROM (t1, t2) JOIN t3 ON (t1.i1 = t3.i3)
と等しいですが、MySQL 5ではJOINの優先度のほうが高いので、
FROM t1, (t2 JOIN t3 ON (t1.i1 = t3.i3))
と扱われてしまうみたい(この文は正しいのか自信なしですが)。結果としてt1.i1は見つかりませんよ、的なエラーが生じる模様。
FROM (t1, t2) JOIN t3 ON (t1.i1 = t3.i3)
みたいに括弧で明示するのが一番スマート?
まあなんですか。ここで晒してるプラグインに関してはそんな高度なSQL使ってなかったと思うので一安心。NP_ShowBlogsもNP_MultipleCategoriesも持て余してしまうので手を出せません。
追記。こちらのほうがよっぽど詳しいです → 今日も今日とて(2006-03-07)。