• ベストアンサー

SQL文について教えてください。

お世話になります。 テーブルを3つ作りました ユーザーテーブル:USER_MS USE_NO USER_NAME 001   太郎 002   次郎 003   三郎 品名テーブル:HINMEI_MS HINMEI_NO HINMEI_NAME 001    りんご 002    みかん 003    イチゴ 嫌いなものテーブル:KIRAI_TR KIRAI_NO USER_NO HINMEI_NO 001001  001   001 002003  002   003 002001  002   001 ※KIRAI_NO=USER_NO.HINMEI_NO と連結してプライマリーキーにした ここで、次郎の嫌いなものを抽出するときには $USER_NO = '002'; $SQL ="SELECT * FROM KITAI_TR A,HINMEI_MS B WHERE A.USER_NO = '$USER_NO'; で抽出できるのですが、 次郎の嫌いでない002みかんだけを抽出するSQL文がわからず苦慮しています。 以前、オラクルでSQLを使ったことがあったのですが、その時はFROM句の後に(SELECT * FORM・・・・) Bなどと書くと通ったのですがMYSQLでは通りませんでした。 よろしくお願いします。

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.2

バージョンの4.1以降ごろから、「副問い合わせ」が使えるようになっているので、 どうせ使うなら最新版をインストールしてはどうでしょうか。 「副問い合わせ」なら     not in ( ... ) あたりで簡単に済むと思います。

aachan-net
質問者

お礼

ありがとうございます。 副問い合わせが使えればWHERE句の後にnot in(select...)と書けばいいのですね。 根本的に、MYSQLのバージョンが古いのが原因のようです。 ネットで見るとバージョン5以降は、ビューが使えるようです。 まるで、オラクルと同じような感じですね。 趣味の世界でのSQLなのですが、もう少し、もうちょっとと考えてしまっています。 貴重な、アドバイス、ありがとうございました。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>以前、オラクルでSQLを使ったことがあったのですが、その時はFROM句の後に(SELECT * FORM・・・・) Bなどと >書くと通ったのですがMYSQLでは通りませんでした。 MySQLのバージョンはいくつですか?4.0系でサブクェリが使えないということでしょうか?

aachan-net
質問者

補足

御回答ありがとうございます。 当方は、レンタルサーバー ロリポップを使っています。 MYSQLのバージョンは、MySQL 4.0.24となっています。 よろしくお願いします。

関連するQ&A