显示不在其他表中的数据加入codeigniter
问题描述:
我有2个表,我尝试加入以将两个表与codeigniter结合在一起,但是当我创建查询连接时,有数据不会显示,因为数据不在另一张表再次,我该如何解决这个问题?显示不在其他表中的数据加入codeigniter
tbl_fruit
_______________
| id | fruit |
|----|--------|
| 0 | manggo |
| 1 | apple |
| 2 | banana |
| 3 | orange |
| 4 | avocado|
tbl_proc
_______________
| id | proc |
|----|--------|
| 0 | juice |
| 1 | blend |
| 2 | shake |
tbl_master
____________________________________
| id | id_fruit | id_proc | client |
|----|----------|---------|---------|
| 0 | 2 | | | //How display on join
| 1 | 1 | 2 | nana |
| 2 | 3 | 2 | george |
| 3 | 4 | 0 | smith |
| 4 | 0 | | billy | //How display on join
| 5 | 2 | 1 | Jack |
tbl_result
----------------------------------------
| no | name fruit | name proc | client |
|----|------------|-----------|--------|
| 0 | apple | shake | nana |
| 1 | orange | shake | george |
| 2 | avocado | juice | smith |
| 3 | banana | blend | smith |
$query = $this->db->select('*')
->from('tb_result')
->join('tb_fruit', 'tb_fruit.id = tb_result.id_fruit')
->join('tb_proc', 'tb_proc.id = tb_result.id_proc')
->get();
return $query->result();
如何显示上没有其他表中的数据,但在表出现在加入tbl_master数据?
答
使用LEFT JOIN在您的加入功能
$query = $this->db->select('*')
->from('tbl_master')
->join('tbl_fruit', 'tbl_fruit.id = tbl_master.id_fruit', 'left')
->join('tbl_proc', 'tbl_proc.id = tbl_master.id_proc', 'left')
->get();
return $query->result();
应该导致的第三个参数这个SQLFIDDLE
+0
谢谢解决,它变成了它的两个使用LEFT,在我之前只需使用一张加入左边的表格即可 –
解决问题的方法是用左加入作为Riyenz答案给出。在此之前,你可以参考https://*.com/questions/5706437/whats-the-difference-between-inner-join-left-join-right-join-and-full-join链接来获得简要的解释何时使用哪些连接。迄今为止非常好的答案。我最喜欢。希望你能从中获得帮助。 – Prabhu
@prabhu,谢谢你的建议,在我使用JOIN LEFT但只有一个表之前,它应该匹配我们指定的表,这已经解决了,已经解决了 –