我有表table_one, table_two, table_three, table_four
所有结构大致相同。 它有列id, name, status, user_id
。来自多个表的MySQL请求数
i.g.除了table_four之外,我在每个表中多次使用约翰用户user_id 345
。 status
对于一些entrys是1和其他条目的是0
现在我需要计数与一个查询多少次这个用户的状态是每个表中1。
所以我:
SELECT table_one.user_id,
SUM(CASE WHEN table_one.status = 1 THEN 1 ELSE 0 END) AS count_tblone
SUM(CASE WHEN table_two.status = 1 THEN 1 ELSE 0 END) AS count_tbltwo
SUM(CASE WHEN table_three.status = 1 THEN 1 ELSE 0 END) AS count_tblthree
SUM(CASE WHEN table_four.status = 1 THEN 1 ELSE 0 END) AS count_tblfour
FROM table_one
LEFT JOIN table_one ON table_one.user_id = table_one.user_id
LEFT JOIN table_two ON table_two.user_id = table_one.user_id
LEFT JOIN table_three ON table_three.user_id = table_one.user_id
LEFT JOIN table_four ON table_four.user_id = table_one.user_id
WHERE tbl_one.user_id = 345
问题是,请求输出4,0,0,0,当它应该是2,1,1,0
如果我刚离开SUM(CASE WHEN table_one.status = 1 THEN 1 ELSE 0 END) AS count_tblone
- count_tblone
将等于4,即使在table_one
- status
字段等于1,用户345
的只有两条记录。
什么是不工作?另外:你的意思是在'LEFT JOIN'中使用'= tbl_resume.candidate_id'吗? – Edward 2012-02-28 20:17:24
对不起,我现在修好了。 – JohnA 2012-02-29 18:19:37
每个表都以自己的键连接到自己,这是没有意义的。我的想法是你从table_one到table_two,table_two到table_three,table_three到table_four。请纠正我,如果我错了 – 2012-02-29 18:49:31