我有两张桌子。
表1
| id | name | description |
|:-----------|------------:|:------------:|
| 1 | abc | qqq
| 2 | efg | qqq
| 3 | hij | wqq
| 4 | klm | c
| 5 | nop | de
| 6 | qrs | aa
表2
| id | quantity |
|:-----------|------------:|
| 1 | 10 |
| 2 | 21 |
我想显示表1中的所有记录,然后从表2中获取数量。如果表1中的id存在于表2中,那么数量值将如表2中所列,否则我将设置0对于表2中未找到的id。
我试过这个
DB::table('table1')
->leftJoin('table2', function($join) use($option){
$join->where('option', $option)
->on('table1.id', '=', 'table2.id');
})
->select(table1.*','table2.*')
->get();
它返回table1中的所有项,但它只获取table2中存在的id,其他将返回null。
如何才能获得预期的结果?
答案 0 :(得分:1)
SELECT tab1.*, ifnull(tab2.quantity, 0) AS qty
FROM tab1
LEFT JOIN tab2 ON tab1.id = tab2.id