Wyswietlanie 1 wyniku zapytania gdy jest kilka jednakowych

0

Witam, mam problem z zapytaniem MySql:

SELECT DISTINCT Activity.name, ReportCleaningPlan.subzone
FROM
ReportCleaningPlan JOIN ReportCleaningPlanPositionActivities ON ReportCleaningPlan.id = ReportCleaningPlanPositionActivities.reportCleaningPlanId JOIN Activity ON ReportCleaningPlanPositionActivities.activityId = Activity.id
WHERE
ReportCleaningPlan.week = 2
ORDER BY ReportCleaningPlan.subzone

Mianowicie zwraca mi dane w takiej formie:

Pomieszczenie | Czynność
pokoj1 | mycie
pokoj1 | sprzatanie
pokoj2 | mycie
pokoj2 | zamiatanie

Natomiast chciałbym żeby nazwa pomieszczenia była wyświetlana tylko raz a do niego czynności. Czy ktoś może wie jak to zrobić?

0

Rozwiązania:

  1. procedura
  2. podzapytanie
  3. pivot
0

Czy możesz dać mi przykład, jestem dosyć początkujący w tym temacie.

1

W MySQL jest jeszcze funkcja GROUP_CONCAT, która tu się może przydać:

SELECT pomieszczenie, GROUP_CONCAT(czynnosc) AS 'czynnosci'
FROM tabelka
GROUP BY pomieszczenie;
0

Super, właśnie o to mi chodziło:) Jeszcze pytanie, czy da się to wyświetlić w wierszach każde osobno a nie w linijce wszystkie razem?

0

Nie rozumiem. To co miałeś na początku jest przecież w wierszach każde osobno...
Pomieszczenie | Czynność
pokoj1 | mycie
pokoj1 | sprzatanie
pokoj2 | mycie
pokoj2 | zamiatanie

0

Zgadza się ale mnie teraz chodzi o takie coś:

Pomieszczenie | Czynność
Pokoj1 | Czynnosc1
| Czynnosc2
| Czynnosc3
Pokoj2 | Czynnosc1

0
SELECT CASE WHEN t.id > (SELECT MIN(id) FROM tabelka WHERE pomieszczenie = t.pomieszczenie) THEN '' ELSE t.pomieszczenie END, t.czynnosc
FROM tabelka AS t
ORDER BY t.id;
1

Kurde, tak trudno na kliencie dodać jednego IF-a? Trzeba baze zarzynać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1