2017-08-18 25 views
-1

父表:我创建了3个表包含父母,子女,标志着

Id int(primarykey), 
Firstname varchar(50), 
Email varchar(50) 

子表:

Mid int(primarykey), 
Mark1 int, 
Mark2 int, 
Id int(foreignkey) 

在标记表:

Uid int(primarykey), 
Mark3 int, 
Id int(foreignkey) 

我在用这个查询:

select Id,Firstname,Mark1,Mark2,Mark3 
from 
(select Id,Firstname,Null as Mark1,Null as Mark2,Null as Mark3 from Parent 
union 
select Id,Null as Firstname,Mark1,Mark2,Null as Mark3 from Child 
union 
select Id,Null as Firstname,Null as Mark1,Null as Mark2,Mark3 from Mark)t 
group by Id,Firstname,Mark1,Mark2,Mark3 

,但如果我使用的ID,姓名,MARK-1,MARK2,MARK3按功能使组和我得到的结果是这样

enter image description here

所以我需要的结果是这样的,从而是可能的做?

enter image description here

+0

(如https://www.w3schools.com/sql/sql_union.asp)。不要使用名称'id'作为外键。通常我们使用' _id'作为一个外键,所以像parent_id表子 – Jens

+0

预期结果背后的逻辑 – Jens

+0

请看看这个链接(https://spaghettidba.com/2015/04/24/how -to-post-at-sql-question-on-a-public-forum /)了解更多关于如何改善问题和不发布图片的信息 – TheGameiswar

回答

0

只是工会代替工会所有。

select Id,Firstname,Null as Mark1,Null as Mark2,Null as Mark3 from Parent 
union all 
select Id,Null as Firstname,Mark1,Mark2,Null as Mark3 from Child 
union all 
select Id,Null as Firstname,Null as Mark1,Null as Mark2,Mark3 from Mark 
0

你不应该使用UNION,但加入(如:https://www.w3schools.com/sql/sql_join.asp

SELECT A.Id, A.Firstname, B.MARK1, B.MARK2, C.MARK3 
FROM PARENT A 
LEFT JOIN CHILD B ON A.ID = B.ID 
LEFT JOIN MARK C ON A.ID = C.ID 

你可以找到很多的教程对SQL连接和SQL UNION