• ベストアンサー
  • すぐに回答を!

副問合せをするとエラーになってしまいます

  • 質問No.3892992
  • 閲覧数95
  • ありがとう数3
  • 回答数2

お礼率 70% (17/24)

お世話になります
PHP+MySQLにて開発しています

あるテーブル1とテーブル2を使って
テーブル1のデータを列挙したいのですが
うまく行かずエラーが出てしまいます

構造は以下のようになっています
-----------------
テーブル1
-----------------
ID  DATE  MEMO
0   3/24   aaa
2   3/25   ccc
-----------------
テーブル2
-----------------
ID   BUNRUI
0   A
1   B
2   A

テーブル2のBUNRUIが'A'の行のID(上で言うと0と2)を
テーブル1のID検索条件にして、
かつDATEが'3/24'の行を取得したく思っています

書いたSQL文は

SELECT * FROM テーブル1 WHERE date='3/24' AND id IN(SELECT id FROM テーブル2 WHERE bunrui='A')

です。
結果としてテーブル1のID=0 DATE=3/24 MEMO=aaa
が取れると良いのですが...
「SELECT id FROM テーブル2 WHERE bunrui='」
が不正とエラーが出てしまいます

(判り難い説明で申し訳無いです…)

宜しくお願いします

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 51% (3827/7415)

MySQLのサブクエリー対応は4.1以降じゃなかったですか?

http://dev.mysql.com/doc/refman/4.1/ja/subqueries.html

また4.1以降でもストレージエンジンの問題もあるかもしれません。
お礼コメント
niko06

お礼率 70% (17/24)

教えて頂いたURLを見たところ、
サブクエリ対応は4.1以降でした…

4.1以前のものの場合の書き方があるみたいです
http://dev.mysql.com/doc/refman/5.1/ja/rewriting-subqueries.html

試してみたところ無事出来ました!

SELECT * FROM テーブル1
WHERE date='3/24'
AND id IN(SELECT id FROM テーブル2 WHERE bunrui='A')

SELECT DISTINCT テーブル1.* FROM テーブル1,テーブル2
WHERE テーブル1.date='3/24'
AND テーブル2.bunrui='A'
AND テーブル1.ID=テーブル2.ID

ありがとうございました
助かりましたm(_ _)m
投稿日時:2008/03/25 14:46

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 51% (3827/7415)

MySQLのバージョンは?
バージョンによってサブクエリーはサポートされていません
補足コメント
niko06

お礼率 70% (17/24)

申し訳無いです。訂正です
 MySQL→4.0.25
 phpMyAdmin→2.11.3
でした。
投稿日時:2008/03/25 13:33
お礼コメント
niko06

お礼率 70% (17/24)

回答有難うございます

失礼しました
MySQLのバージョンは2.11.3でした
投稿日時:2008/03/25 13:25
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ