PHPで書かれたスクリプトの中で、Postgresからmysqlへ移行作業を行っています。
Postgresで動いている以下のSQL文を、mysqlでも動くようにしたいのです。
SELECT tableA.*,tableB.a,tableB.b from tableA where id='1'
idはtableAとtableBの両方にあるカラムです。値1は仮のものです。
質問事項
◆mysqlで動く代替のSQL文を教えてください。
補足
○PHPで接続しているため、その点も考慮願います
○mysqlのバージョンは5.1.34です
○エラーメッセージは "Where句があいまい"という旨のものが出ます。
ただ、どう改善すればいいのかが分かりません。
おそらくテーブルの指定を行えばいいのだと思いますが、、、、
結合したテーブルの中からid=1を見よ、という命令だと思いますがどうでしょうか。
よろしくお願いします。
まず第一に、以下のSQL文はPostgreSQLでは動かないはずです。
ご確認ください。
SELECT tableA.*,tableB.a,tableB.b from tableA where id='1'
正しくは、
SELECT tableA.*,tableB.a,tableB.b from tableA,tableB where tableA.id='1';
です。
もし、tableAのidカラムとtableBのidカラムが '1' であるレコードを抽出したいのなら、下記のようにします。
SELECT tableA.*,tableB.a,tableB.b from tableA,tableB where tableA.id='1' AND tableB.id='1';
あと
SELECT tableA.*,tableB.a,tableB.b from tableA where id='1'
と tableB 抽出しているにも関わらず
from には 入ってません。
入れておいたほうがいいでしょう。
>SELECT tableA.*,tableB.a,tableB.b from tableA where id='1'
>idはtableAとtableBの両方にあるカラムです。値1は仮のものです。
で、実際に id='1'で 使用するのは どちらのテーブルなんでしょうか?
だから記述が あいまい と言われるのです。
tableAでしたら
tableA.id='1'
tableBでしたら
tableB.id='1'
とすべきです。
SELECT tableA.*,tableB.a,tableB.b from tableA INNER JOIN tableB ON tableA.id=tableB.id where id='1'
または
SELECT tableA.*,tableB.a,tableB.b from tableA,tableB where tableA.id=tableB.id and id='1'
まず第一に、以下のSQL文はPostgreSQLでは動かないはずです。
ご確認ください。
SELECT tableA.*,tableB.a,tableB.b from tableA where id='1'
正しくは、
SELECT tableA.*,tableB.a,tableB.b from tableA,tableB where tableA.id='1';
です。
もし、tableAのidカラムとtableBのidカラムが '1' であるレコードを抽出したいのなら、下記のようにします。
SELECT tableA.*,tableB.a,tableB.b from tableA,tableB where tableA.id='1' AND tableB.id='1';
コメント(0件)