- ベストアンサー
MYSQLでの条件検索ORを使って・・・
MYSQLを使って、条件つきの検索をしたいのですが、下記のSELECT文を使って、検索をしています。 下記のser_table.group_idが01のものと、04のものを両方とってきたいのですが、うまくできないので、教えていただけないでしょうか? $STRSQL=qq{SELECT }; $STRSQL=$STRSQL.qq{awaytable.iput_charg_id, awaytable.number, awaytable.total_day, awaytable.news_comp, awaytable.news_title, awaytable.news_content, awaytable.URL_news, awaytable.news_gif }; $STRSQL=$STRSQL.qq{FROM awaytable, ser_table }; $STRSQL=$STRSQL.qq{WHERE ser_table.iput_charg_id = awaytable.iput_charg_id }; $STRSQL=$STRSQL.qq{AND ser_table.iput_charg_id <> '995' }; $STRSQL=$STRSQL.qq{AND ser_table.group_id = '04' }; $STRSQL=$STRSQL.qq{AND ser_table.group_id = '01' }; $STRSQL=$STRSQL.qq{ORDER BY awaytable.total_day DESC }; $STRSQL=$STRSQL.qq{LIMIT $pos,$pagesize };
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
WHERE句の条件文の部分がser_table.group_idが01且つ04であると 指定されています。 これを以下のようにser_table.group_idが01又は04になるように ORと括弧を使って下さい。 WHERE ser_table.iput_charg_id = awaytable.iput_charg_id AND ser_table.iput_charg_id <> '995' AND (ser_table.group_id = '04' OR ser_table.group_id = '01')
その他の回答 (1)
AND(「かつ」)とOR(「または」)の論理的な意味を理解していますか? (略)...... ser_table.group_id = '04' AND ser_table.group_id = '01' ...... (略) これだと、「group_id が'04'であり、かつ group_id が'01'である」、という条件になります。group_id を「性別」、'04'を'男'、'01'を'女'に読み替えれば、「性別が'男'であり、かつ性別が'女'である」となりますので、マッチするレコードが存在し得ない条件であることは容易に理解できると思います。
お礼
すいません。SELECT文の記入が間違っていました。 04の方をANDに01の方をORにしてたのですが、できなくて、 ( )でくくらないのが原因だと判明しました。 ご指摘ありがとうございました。
お礼
ANDの後の文を()でくくることをしていませんでした。()でくくったら、できました。 これからもよく使う文になると思うので、助かりました。 ありがとうございました。