MYSQL JOIN WHERE ISSUES - 需要某种if条件

时间:2010-06-15 02:12:14

标签: mysql if-statement left-join where-clause

这很难解释,但我会尽力而为

事情是我有4个表都有一个特定的列与彼此相关。 1个用户表(agent_users),1个工作小时数(agent_pers),1个已售出商品(agent_stat),1个带项目(agent_pro) 用户和项目表在手头的问题上是无关紧要的,但是为了让你更好地理解为什么某些表包含在我的查询中我决定仍然提到它们=) 问题是我使用2个页面将数据插入到工作时间和那个时间表中的已售物品,然后我有第三个页面来总结当前月份的所有内容,对此的查询如下:

SELECT *, SUM(sv_p_kom),SUM(sv_p_gick),SUM(sv_p_lunch) FROM ((
agent_users 
LEFT JOIN agent_pers ON agent_users.sv_aid = agent_pers.sv_p_uid) 
LEFT JOIN 
agent_stat ON agent_pers.sv_p_uid = agent_stat.sv_s_uid) 
LEFT JOIN 
agent_pro ON agent_pers.sv_p_pid=agent_pro.p_id
WHERE MONTH(agent_pers.sv_p_datum) =7 GROUP BY sv_aname

所以现在的问题是我不希望前几个月的销售商品被包含在收到的数据中,我知道我可以通过简单添加WHERE部分MONTH(agent_stat.sv_s_datum)= 7来解决这个问题但是如果没有那个月出售的物品根本没有数据显示不是时间或任何东西。任何有关我如何解决这个问题的帮助非常感谢。如果有什么东西不那么清楚,请不要犹豫,并尽力回答。毕竟我的英语不是最好的:P 问候 breezer

2 个答案:

答案 0 :(得分:0)

您的数据是否可以添加(MONTH(agent_stat.sv_s_datum)= 7或agent_stat.sv_s_datum IS NULL)到WHERE子句?

答案 1 :(得分:0)

足够公平:) - 将条件作为JOIN子句中的第二个条件。 ON(agent_pers.sv_p_uid = agent_stat.sv_s_uid AND agent_stat.sv_s_datum = 7)