sql >> Databáze >  >> Database Tools >> phpMyAdmin

SQL příkaz pro zobrazení ve skupině určitého sloupce

Zpočátku jsem přišel s tímto:

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

Výsledek:

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

Výsledek Fiddle .

Jak můžete vidět Večerní pole obsahuje Faris dvakrát . Použil jsem tedy dva dotazy a spojil tyto výsledky. Takhle:

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

Výsledek:

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

Zobrazit výsledek v SQL Fiddle .

Vysvětlení:

Vybíráme zvlášť pro Ráno a Večer, pak tyto dvě tabulky spojujeme s datem a dnem. A nakonec je výsledek načten ze spojeného dotazu.

GROUP_CONCAT se používá k seskupení polí se stejným datem a dnem. Můžeme použít SEPARATOR ' ' pro prostor jako oddělovač. Pokud odeberete SEPARATOR ' ' , dostanete výsledek oddělený čárkou(,).

COALESCE se používá k nahrazení hodnot null prázdným řetězcem ('' ).



  1. Jak skriptovat jiné než výchozí řazení a přeskočit explicitní skriptování pro výchozí řazení?

  2. Poslední vydání DBeaver EE v roce 2020

  3. Změňte port serveru Mysql v Phpmyadmin

  4. Změna CommandTimeout v SQL Management Studio