簡體   English   中英

從連接表中選擇所有行作為列

[英]Select all rows from joined table as colums

嗨我在從數據庫表中選擇行時遇到問題。

表A.

Id, name

表B.

Id, playingdate, points

表a和b與諸如a.id = b.id類的鏈接相關聯

表a的數據

1, john
2, tim

表b的數據

1, 20170101, 3455
1, 20170108, 4532
2, 20170101, 5666
2, 20170108, 4768

所以我想回來

John, 3455, 4532
Tim, 5666, 4768

我如何建立sql選擇?

不知道為什么需要這個,因為積分可能很長:

SELECT A.name, group_concat(B.points)
FROM A
JOIN B ON A.id = B.id
GROUP BY A.name

如你還要求它在列中,那么它甚至很少使用。 但是,如果列固定為:name,20170101,20170108,則SQL將為:

SELECT 
  A.name,
  ifnull(B1.points,0) AS '20170101',
  ifnull(B2.points,0) AS '20170108'
FROM A
LEFT JOIN B AS B1 ON A.id = B1.id AND B1.playingdate = 20170101
LEFT JOIN B AS B2 ON A.id = B2.id AND B2.playingdate = 20170108

第一個group_concat和表A和B上的名稱連接:

 SELECT concat(A.name, ',' , group_concat(B.points)) as  name_points
        FROM A
        left outer join B ON A.id = B.id
        GROUP BY A.id

SELECT A.name, group_concat(B.points) as  points
        FROM A
        left outer join B ON A.id = B.id
        GROUP BY A.id

以下是您查詢的可行解決方案....如果您有任何問題,請告訴我...

set @row1 := 0;
set @row2 := 0;
select a.id,a.name,c.p1,c.p2
from a 
inner join 
(
select b1.id,b1.p1,b2.p2
from 
    (   
    select @row1 := @row1 +1 as r1,b.id ,b.points as p1
    from b
    group by id 
    )b1
inner join 
    (
    select @row2 := @row2 +1 as r2,b.points as p2
    from b
    )b2
on b1.r1+1 = b2.r2
)c on a.id = c.id 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM