【问题标题】:Show data that is not in other table with join codeigniter使用 join codeigniter 显示不在其他表中的数据
【发布时间】:2017-12-18 01:42:17
【问题描述】:

我有 2 个表,我尝试加入以将 2 个表与 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上显示在其他表中没有数据但在join中的表中出现的数据?

【问题讨论】:

  • 解决问题的方法是使用 Riyenz 回答中给出的左连接。在此之前,您可以参考stackoverflow.com/questions/5706437/… 链接以简要说明何时使用 which joins。到目前为止非常好的答案。我最喜欢了。希望你能从中得到帮助。
  • @prabhu,谢谢你的建议,在我使用 JOIN LEFT 但只有一个表之前,它应该与我们指定的表匹配,这已经解决了

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

在连接函数的第三个参数处使用 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

【讨论】:

  • 谢谢解决,原来是它的两个使用 LEFT,在我只使用 JOIN LEFT 的一个表之前
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多