先ほど質問しましたが、別のSQL文で再度質問です。


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を見よ、という命令だと思いますがどうでしょうか。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/03/18 13:57:41
  • 終了:2011/03/18 15:09:08

ベストアンサー

id:deflation No.4

deflation回答回数1036ベストアンサー獲得回数1262011/03/18 14:40:28

ポイント23pt

まず第一に、以下の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';

その他の回答(3件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982011/03/18 14:05:36

ポイント23pt

あと

SELECT tableA.*,tableB.a,tableB.b from tableA where id='1'

と tableB 抽出しているにも関わらず

from には 入ってません。

入れておいたほうがいいでしょう。

id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982011/03/18 14:03:04

ポイント23pt

>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'

とすべきです。

id:pretaroe No.3

pretaroe回答回数531ベストアンサー獲得回数752011/03/18 14:25:53

ポイント23pt

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'

id:deflation No.4

deflation回答回数1036ベストアンサー獲得回数1262011/03/18 14:40:28ここでベストアンサー

ポイント23pt

まず第一に、以下の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';

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません