Pokud přidáte
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
Pak uvidíte, proč ostatní RDBMS tuto syntaxi neumožňují:
- 3 neagregované sloupce v SELECT, ale jeden v GROUP BY
- Sloupec ORDER BY není ve skupině GROUP BY/SELECT a není agregován
Pokud chcete GROUP BY spíše než DISTINCT, pak musíte GROUP BY all ve sloupci SELECT
SELECT s.serviceid, s.servicenameit, s.servicenameen
FROM services s, kpi k, checklist_has_kpi chk
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61
GROUP BY s.serviceid, s.servicenameit, s.servicenameen
Pak ale nemáte žádný chk.order
objednávat podle, ať už pomocí GROUP BY nebo DISTINCT
Takže co s tím, úplně ignorovat duplikáty?
SELECT s.serviceid, s.servicenameit, s.servicenameen
FROM services s, kpi k, checklist_has_kpi chk
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61
ORDER BY chk.order ASC
Nebo toto pro OBJEDNÁVKU PODLE nejranější objednávky na 3x services
sloupce
SELECT s.serviceid, s.servicenameit, s.servicenameen
FROM services s, kpi k, checklist_has_kpi chk
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61
GROUP BY s.serviceid, s.servicenameit, s.servicenameen
ORDER BY MIN(chk.order)