MYSQL ПРИСОЕДИНЯЙТЕСЬ К ГДЕ ВОПРОСАМ - нужно какое-то условие if - PullRequest
1 голос
/ 15 июня 2010

Ну, это будет трудно объяснить, но я буду стараться изо всех сил

Дело в том, что у меня есть 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 голосов
/ 15 июня 2010

Достаточно справедливо :) - поместите условие в качестве второго условия в предложении JOIN. ON (agent_pers.sv_p_uid = agent_stat.sv_s_uid И agent_stat.sv_s_datum = 7)

0 голосов
/ 15 июня 2010

Ваши данные таковы, что вы могли бы добавить (MONTH (agent_stat.sv_s_datum) = 7 ИЛИ agent_stat.sv_s_datum IS NULL) к предложению WHERE?

...