[英]sql select statement with 3 tables?
我在数据库中有3个相关表,该表是A,B和C表结构,如下所示
表A
id | name_A
--- + ---------
1 | Endru
2 | maz
3 | Hudson
表B
id | name_B
----- + -------
10 | Food
11 | clothes
表C
id | status
--- + -------
1 | exist
10 | exist
3 | none
我想这样生产
id | name_A | name_B | status
------------------------------------------
1 | Endru | null | exist
10 | null | food | exist
3 | hudson | null | none
如何实现,我尝试使用内部和左侧外部联接,但未成功。
谢谢
你可以用做union all
和聚合:
select id, max(name_a) as name_a, max(name_b) as name_b,
coalesce(max(status), 'none') as status
from (select id, name_a, NULL as name_b, NULL as status
from tableA
union all
select id, NULL, name_b, NULL
from tableB
union all
select id, NULL, NULL as name_b, status
from tableC
) abc
group by id;
试试这个查询:
SELECT `id`, `name_A`, `name_B`, `status`
FROM `tableC`
LEFT JOIN `tableA` USING (`id`)
LEFT JOIN `tableB` USING (`id`)
我认为以下查询将获取您需要的内容
SELECT tableC.id, TableA.name_A,TableB.name_B,tableC.status
FROM tableC
LEFT JOIN TableA on TableC.id = TableA .id
LEFT JOIN TableB on TableC.id = TableB .id
使用此查询:
SELECT tbc.Id,tba.Name_A,tbb.NameB,tbc.[Status]
FROM tablec tbc
INNER JOIN tablea tba on tba.Id = tbc.Id
INNER JOIN tableb tbb on tbb.Id = tbc.Id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.