如何将三张表拼接成一张表?
Posted
技术标签:
【中文标题】如何将三张表拼接成一张表?【英文标题】:How to concatenate three tables into one table? 【发布时间】:2015-08-11 07:29:42 【问题描述】:Table1 tblUserBadges
uid scenid badgeid timestamp
u0 s1 b0 t1
u0 s1 b1 t2
u0 s2 b0 t3
u1 s1 b3 t4
u1 s1 b4 t5
Table2 tblUserWarnings
uid scenid warningid timestamp
u0 s1 w0 t1
u0 s1 w1 t2
u0 s2 w2 t3
u1 s1 w3 t4
u1 s1 w4 t5
Table3 tblUserScenScores
uid scenid score attempts timestamp
u0 s1 20 3 t1
u1 s1 22 7 t2
u0 s2 -5 1 t3
结果:Tabl4 viewUserScenariostats
uid scenid badges warnings score attempts
u0 s1 b0, b1 w0, w1 20 3
u0 s2 b0 w2 -5 1
u1 s1 b3, b4 w3, w4 22 7
我尝试如下查询:
CREATE VIEW viewUserScenarioStats AS
SELECT uid.tblUserBadge, GROUP_CONCAT(scenid).tblUserWarnings,
GROUP_CONCAT( badgeid).tblUserScrores, warningid.tblUserWarnings, score, attempts
如何连接三个表。 但不工作......有什么帮助吗?
【问题讨论】:
【参考方案1】:你可以这样做
select s.uid ,
s.scenid,
group_concat(distinct b.badgeid) badges,
group_concat(distinct w.warningid) `warnings`,
s.score,
s.attempts
from tblUserScenScores s
join tblUserWarnings w on(s.uid = w.uid and s.scenid = w.scenid)
join tblUserBadges b on(s.uid = b.uid and s.scenid = b.scenid)
group by s.uid ,s.scenid
DEMO
View Demo
【讨论】:
你能告诉我吗?你是怎么做到的?对我有什么建议吗?把你的秘钥给我…… @PrashantTapase 没什么特别的,我刚刚加入了您的表格,然后根据相同的 uid 对结果进行分组,场景中每个分数都有来自徽章和警告表的多行,因此使用 group_concat 我合并了徽章并警告每个分数作为逗号分隔的列表,但 w0、w1 出现的次数超过 1,因此在group_concat
中添加了不同的选项,以便仅在我认为这对您有意义时才选择相关的警告和徽章以上是关于如何将三张表拼接成一张表?的主要内容,如果未能解决你的问题,请参考以下文章
获取员工其当前的薪水比其manager当前薪水还高的相关信息