sql >> Database >  >> Database Tools >> phpMyAdmin

SQL-instructie om in een groep van een bepaalde kolom weer te geven

Aanvankelijk bedacht ik dit:

SELECT s.date, s.day, COALESCE(GROUP_CONCAT(bm.worker SEPARATOR ' '),'') as Morning,COALESCE(GROUP_CONCAT(be.worker SEPARATOR ' '),'') as Evening
FROM schedule s LEFT JOIN 
block bm ON s.id = bm.schedule_id AND bm.shift=1 LEFT JOIN 
block be ON s.id = be.schedule_id AND be.shift=2
GROUP BY s.date,s.day

Resultaat:

DATE        DAY       MORNING       EVENING
22/09/2014  Monday    Ahmad Abdul   Faris Faris
23/09/2014  Tuesday                 Iqbal

Resultaat in Fiddle .

Zoals je kunt zien Avondveld bevat Faris twee keer . Dus ik gebruikte twee query's en voegde me bij die resultaten. Zoals dit:

SELECT T1.date,T1.day,COALESCE(T1.Morning,'') as Morning,COALESCE(T2.Evening,'') as Evening FROM
    (SELECT s.date, s.day, GROUP_CONCAT(bm.worker SEPARATOR ' ') as Morning
     FROM schedule s LEFT JOIN 
     block bm ON s.id = bm.schedule_id AND bm.shift=1
     GROUP BY s.date,s.day) T1
  JOIN
    (SELECT s.date, s.day,GROUP_CONCAT(be.worker SEPARATOR ' ') as Evening
     FROM schedule s LEFT JOIN 
     block be ON s.id = be.schedule_id AND be.shift=2
     GROUP BY s.date,s.day) T2 
  ON T1.Date=T2.Date AND T1.Day=T2.Day

Resultaat:

DATE        DAY      MORNING        EVENING
22/09/2014  Monday   Ahmad Abdul    Faris
23/09/2014  Tuesday                 Iqbal

Zie resultaat in SQL Fiddle .

Uitleg:

We selecteren voor Ochtend en Avond apart, dan voegen we deze twee tabellen samen met datum en dag. En uiteindelijk wordt het resultaat opgehaald uit de samengevoegde zoekopdracht.

GROUP_CONCAT wordt gebruikt om velden met dezelfde datum en dag te groeperen. We kunnen SEPARATOR ' ' . gebruiken voor ruimte als scheidingsteken. Als u SEPARATOR ' ' . verwijdert , krijg je het resultaat gescheiden door komma(,).

COALESCE wordt gebruikt om null-waarden te vervangen door een lege tekenreeks ('' ).



  1. Kan ASP.NET-database niet koppelen aan SQL Server Management Studio

  2. Hoe maak ik contextuele AUTO_INCREMENT in MySql?

  3. Geen UI-dialoogvensters in MS Azure / SQL Server Management Studio

  4. Hoe lang duurt het voordat een 75 MB sql-bestand is geïmporteerd in PHPMyAdmin?