- ベストアンサー
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では通りませんでした。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
バージョンの4.1以降ごろから、「副問い合わせ」が使えるようになっているので、 どうせ使うなら最新版をインストールしてはどうでしょうか。 「副問い合わせ」なら not in ( ... ) あたりで簡単に済むと思います。
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
>以前、オラクルでSQLを使ったことがあったのですが、その時はFROM句の後に(SELECT * FORM・・・・) Bなどと >書くと通ったのですがMYSQLでは通りませんでした。 MySQLのバージョンはいくつですか?4.0系でサブクェリが使えないということでしょうか?
補足
御回答ありがとうございます。 当方は、レンタルサーバー ロリポップを使っています。 MYSQLのバージョンは、MySQL 4.0.24となっています。 よろしくお願いします。
お礼
ありがとうございます。 副問い合わせが使えればWHERE句の後にnot in(select...)と書けばいいのですね。 根本的に、MYSQLのバージョンが古いのが原因のようです。 ネットで見るとバージョン5以降は、ビューが使えるようです。 まるで、オラクルと同じような感じですね。 趣味の世界でのSQLなのですが、もう少し、もうちょっとと考えてしまっています。 貴重な、アドバイス、ありがとうございました。