从表中获取所有数据,有时将该表与另一个表相关联

时间:2017-08-29 18:30:09

标签: php mysql sql codeigniter

我的问题是:我可以这样做吗? 我尝试了很多东西,其中一些是:

我需要所有信息表表A ,有时我需要将此表加入表B 。我的问题是,当我加入两个表时,如果表A 中的特定参数不在表B 中,只需在specific parameter are时给我记录,但是我想要所有的记录。

表A

|--------------------------------|
|           Table A              |
|-------------------|------------|
| id_table_A | name | id_table_B |
|------------|------|------------|
|   1        | Joe  |  1         |
|------------|------|------------|
|   2        | Ben  |            |
|------------|------|------------|
|   3        | Lya  |            |
|------------|------|------------|
|   4        | luis |  2         |
|------------|------|------------|

表B

|----------------------|
|      Table B         |
|----------------------|
| id_table_B | Elements|
|------------|---------|
|   1        |    Car  | 
|------------|---------|
|   2        |    Byke | 
|------------|---------|
|   3        |    Moto | 
|------------|---------|

我希望在查看中显示的是:

|------------|------|------------|
| id_table_A | name | Elements   |
|------------|------|------------|
|   1        | Joe  |  Car       |
|------------|------|------------|
|   2        | Ben  |            |
|------------|------|------------|
|   3        | Lya  |            |
|------------|------|------------|
|   4        | luis |  Byke      |
|------------|------|------------|

我的模特 在我的模型中,这是我尝试过的:

"SELECT * FROM table_A, table_B where table_A.id_table_B = table_B.id_table_B"

但此查询仅显示数据 1和4 。 这可以做到或不做? 提前谢谢。

2 个答案:

答案 0 :(得分:3)

您可以使用左连接

SELECT * 
FROM table_A
left join table_B on table_A.id_table_B = table_B.id_table_B

当表之间的键可能不总是匹配时,使用左连接。在这种情况下,左连接会在可能的情况下检索正确的匹配,并且在不可能时值变为NULL

SQL LEFT JOIN Documentation

答案 1 :(得分:0)

您需要一个明确的LEFT JOIN,而不是在您只是列出这样的表时使用的隐式INNER JOINhttps://www.w3schools.com/sql/sql_join_left.asp