我有两张表DEPARTMENT和BUDGET。我想要返回所有部门,即使它们不在BUDGET表中。我正在使用以下查询,但它似乎没有按预期工作。
SELECT dept_name FROM department
LEFT JOIN budget ON budget.dept_id = department.dept_id
AND budget.division = 5 AND budget.year = 2015
上面的查询返回所有部门的部门而不仅仅是部门5.如果我使用WHERE子句,那么即使我使用LEFT JOIN也不会返回任何记录。我做错了什么?
SQL FIDDLE ADDED
http://sqlfiddle.com/#!2/d4b07/12
再次编辑
看起来我找到了我想要的查询。这将返回一个结果'法律'在我上面发布的SQL小提琴中,这就是我想要的。
SELECT DISTINCT D.name, B.budget_year FROM department D
LEFT JOIN budget B ON D.ID = B.department_id
AND D.division_id = B.division_id
AND B.budget_year = 2015
WHERE D.division_id = 11
答案 0 :(得分:1)
问题是您的部门ID不在部门表中。如果您在该表中有分区ID,请在where子句中使用它。
你想要所有部门,即使他们不在预算范围内,所以无论预算表是否存在,你都会得到部门
尝试:
SELECT dept_name FROM department
LEFT JOIN budget ON budget.dept_id = department.dept_id and budget.division = department.division AND budget.year = 2015
WHERE department.division = 5
答案 1 :(得分:0)
以下查询有效。
SELECT DISTINCT D.name, B.budget_year FROM department D
LEFT JOIN budget B ON D.ID = B.department_id
AND D.division_id = B.division_id
AND B.budget_year = 2015
WHERE D.division_id = 11