- ベストアンサー
IF文
いつもお世話になっています。 tableA -------------------- ID | NAME 001 | aaaa 002 | bbb 003 | ccc 004 | ddd tableB -------------------- ID | DATE 001 | 2006-11-20 003 | 2006-11-20 というテーブルがあります。 データとして取得したいのは、tableA の4件ですが もし「tableA.ID=tableB.ID」だった場合 MatchID=1 そうでなければ MatchID=9 にしたいと思っております。 (CASE DATE<=NOW() WHEN tableA.ID=tableB.ID THEN 1 ELSE 9 END) as MatchID とやってみたのですが、ID「001」にしか MatchID=1 になりません。 どのようにしたらよろしいでしょうか? ご教授お願いいたします。 <環境> PHP:4.3.2 Apache:2.0.40 (Red Hat Linux) MySQL:3.23.56
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- moon_night
- ベストアンサー率32% (598/1831)
回答No.4
- moon_night
- ベストアンサー率32% (598/1831)
回答No.2
- fdsjaklfjas
- ベストアンサー率81% (96/118)
回答No.1
お礼
補足です。 表示されなかった理由がわかりました。 where o.sdate<=NOW() and o.edate>=NOW() をしていたからでした。 o.sid is NULL o.sdate<=NOW() o.edate>=NOW() if の条件は上記のようにしたいのですが、その場合どのようにしたらよろしいでしょうか。(すべて and でつなげたいです) よろしくお願いいたいます。
補足
moon_night さんありがとうございます。 全部で4つのテーブルでした。 select s.*, d.*, min(d.date) Min, max(d.date) Max, p.pid, if(o.sid is NULL, 9, 1) as MatchID from tableSe s left join tableDate d on (s.sid=d.sid) left join tablePa p on (s.pid=p.pid) left outer join tableOdr o on (s.sid=o.sid) where s.sdate<=NOW() and s.edate>=NOW() and o.sdate<=NOW() and o.edate>=NOW() group by s.sid order by MatchID ASC, s.sdateDESC 基本のSQL文は上記のようになっております。 最初に質問させていただいたときのテーブルは tableA=tableSe, tableB=tableOdr となっています。 よろしくお願いいたします。