我有两个表,第一个叫做teams
,第二个叫cpd
,我想要这个结果(见下面的结果屏幕)。我试过自己但没有成功(见下面的练习查询)。
团队表
id name sub_cat_id
1 SACRAMENTO KINGS 19
2 KINGS 19
3 MIMAMI HEAT 19
4 HEAT 20
5 KITE 20
cpd table
id team_id status added_date
1 3 1 2012-05-26
2 3 1 2012-05-27
3 3 0 2012-05-28
练习查询
SELECT
t.`id`,t.`name`,IFNULL(cpd.status,0) AS resultStatus,IFNULL(cpd.added_date,CURDATE()) AS added_date
FROM `teams` t
LEFT JOIN cpd ON cpd.team_id = t.id
WHERE t.`sub_cat_id` = 19 OR cpd.added_date = CURDATE()
结果屏幕(仅在屏幕中需要那些行为黑色)
更新
说明?
sub_cat_id = 19
相关的行
team table
cpd table
加入cpd.status filed
cpd.status
必须与cpd table
中的当前日期相关,例如2012-05-28
答案 0 :(得分:0)
选择
t。id
,t。name
,IFNULL(cpd.status,0)AS resultStatus,IFNULL(cpd.added_date,CURDATE())AS added_date
来自teams
t
LEFT JOIN cpd ON cpd.team_id = t.id.
在哪里。sub_cat_id
= 19或者cpd.added_date = CURDATE()
GROUP BY t.id
答案 1 :(得分:0)
获得所需结果的方法不止一种:
例如:
SELECT t.`id`,t.`name`,
IFNULL(cpd.status,0) AS resultStatus,
IFNULL(cpd.added_date,CURDATE()) AS added_date
FROM `teams` t
INNER JOIN cpd ON (cpd.team_id = t.id AND cpd.status = 0)
WHERE t.`sub_cat_id` = 19
OR
cpd.added_date = CURDATE()
答案 2 :(得分:0)
你的JOIN ON cpd.team_id = t.id
只匹配一个元组与cpd表,所以其他元组的日期设置为NULL(因为你正在进行LEFT JOIN),因此where查询只给出一个元组