Mysql从表中加入选择记录而不在其他表

时间:2016-04-30 01:53:49

标签: join mysqli

嗨,我被困在查询中,我有一个像这样的表

budget_details

id  budget_id  expenditure_head_id  budget
1   1          1                    1233
2   1          2                    333
3   1          3                    567
4   2          1                    343
5   2          2                    343
6   2          3                    6767
7   2          4                    557

expenditure_heads

id name
1  abc
2  xyz
3  qwe
4  uvw

我想从budget_details那里得到所有的支出 如果不在budget_details中,则budget_id = 1不包含expenditure_head_id 4 但我想选择0或null显示

我试过这个,但它没有显示expense_head_id 4

select `expenditure_heads`.`name`, `budget_details`.`budget`, `budget_details`.`id` from 
`budget_details` 
right join `expenditure_heads` on `budget_details`.`expenditure_head_id` = `expenditure_heads`.`id` 
 where `budget_details`.`budget_id` = 1"

请帮助

1 个答案:

答案 0 :(得分:1)

where可以避免您获得所需的缺失行。左连接在ON语句上完成,因此此查询应该适合您:

 SELECT EH.name, BD.budget, BD.id FROM expenditure_heads EH 
 LEFT JOIN budget_details BD 
     ON (BD.expenditure_head_id = EH.id AND BD.budget_id = 1)