我的问题是:我能做到吗我尝试了很多东西,其中一些是:
- 搜索1
- 搜索2
- 搜索3
- 搜索4
我需要表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。这能不能做到?提前谢谢。
您可以使用左联接
SELECT *
FROM table_A
left join table_B on table_A.id_table_B = table_B.id_table_B
当表之间的键可能不总是匹配时,使用左联接。在这种情况下,左联接在可能的地方检索正确的匹配,而在不可能的时候,值变为NULL
。
SQL LEFT JOIN文档
您需要一个显式LEFT JOIN
,而不是在简单列出这样的表时使用的隐式INNER JOIN
。https://www.w3schools.com/sql/sql_join_left.asp