繁体   English   中英

sql select语句有3个表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM