プロが教える店舗&オフィスのセキュリティ対策術

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 };

A 回答 (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')
    • good
    • 1
この回答へのお礼

ANDの後の文を()でくくることをしていませんでした。()でくくったら、できました。
これからもよく使う文になると思うので、助かりました。
ありがとうございました。

お礼日時:2003/02/04 11:20

 


AND(「かつ」)とOR(「または」)の論理的な意味を理解していますか?

(略)...... ser_table.group_id = '04' AND ser_table.group_id = '01' ...... (略)

これだと、「group_id が'04'であり、かつ group_id が'01'である」、という条件になります。group_id を「性別」、'04'を'男'、'01'を'女'に読み替えれば、「性別が'男'であり、かつ性別が'女'である」となりますので、マッチするレコードが存在し得ない条件であることは容易に理解できると思います。
 
    • good
    • 0
この回答へのお礼

すいません。SELECT文の記入が間違っていました。
04の方をANDに01の方をORにしてたのですが、できなくて、
( )でくくらないのが原因だと判明しました。
ご指摘ありがとうございました。

お礼日時:2003/02/04 11:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!