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 に答える