0

我有以下查询:

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

基本上是从不同表的“empoleados”列中获取所有名称(它们也没有匹配的日期、开始、结束)并显示它。

非常感谢!

4

1 回答 1

0

如果nombre来自两个表,那么这可能是您想要的连接键。您似乎还想要一个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 ;
于 2013-08-17T12:55:49.230 回答