2013-08-17 30 views
0

我有以下查詢:從不同的表中的數據葛亭旁邊CONCAT-ED數據

SELECT date, GROUP_CONCAT(CONCAT_WS('|', nombre, start, end, posicion)) schedule 
    FROM dias, empleados 
GROUP BY date 
ORDER BY date ASC 

,我得到以下結果:

1376542800 Tesar|12:00|16:00|Cocina,Levina|12:00|16:00|Cocina... 
1376629200 Levina|12:00|14:00|Barra,Peter|11:00|14:00|Cocina,... 
1376715600 Raquel|12:00|14:00|Barra,Tesar|12:00|14:00|Barra,L... 
1376802000 Tom|12:00|14:00|Barra,Raquel|10:00|11:00|Barra,Pet... 
1376888400 Tesar|12:00|14:00|Barra,Levina|12:00|14:00|Barra,T.. 

基本上一切變得組合在一起並得到複製: 我如何能得到以下結果:

1376542800 Tesar|12:00|16:00|Cocina 
1376629200 Tom|12:00|14:00|Barra,Tesar|11:00|14:00|Cocina 
1376715600 Tom|12:00|14:00|Barra 
1376802000 Tom|12:00|14:00|Barra,Levina|10:00|11:00|Barra 
1376888400 Tom|12:00|14:00|Barraç 
       PEter 
       Mike 
       MArko 

基本上把所有的南es(也沒有匹配的日期,開始,結束)來自不同表中的「empoleados」列,並顯示它。

非常感謝!

+0

您的查詢沒有意義。 「日期」字段來自哪裏?爲什麼兩個表格之間存在連接條件? –

+0

「nombre,start,end,posicion」專欄來自dias,只有「nombre」來自「empleados」表。沒有JOIN。無論有沒有數據連接到他們,我都想擁有一個包含所有名稱的填充表。 – Iznogud

回答

0

如果​​來自兩個表,那麼這可能是您想要的連接鍵。看起來你也想要一個left outer join

SELECT d.date, 
     coalesce(GROUP_CONCAT(CONCAT_WS('|', d.nombre, d.start, d.end, d.posicion)), e.nombre) schedule 
    FROM empleados e left outer join 
     dias d 
     on e.nombre = d.nombre 
GROUP BY date, 
     (case when date is NULL then e.nombre end) 
ORDER BY date ASC ; 
+0

對不起,這個響應速度慢。我幾乎得到相同的結果。所有的數據都聚集在一起。 – Iznogud