Wenn Sie hinzufügen
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
Dann werden Sie sehen, warum andere RDBMS diese Syntax nicht zulassen:
- 3 nicht aggregierte Spalten in SELECT, aber eine in GROUP BY
- ORDER BY-Spalte ist nicht in GROUP BY/SELECT und nicht aggregiert
Wenn Sie lieber GROUP BY als DISTINCT verwenden möchten, müssen Sie in der SELECT-Spalte GROUP BY all angeben
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
Aber dann haben Sie keine chk.order
um zu sortieren, ob mit GROUP BY oder DISTINCT
Was ist also damit, Duplikate vollständig zu ignorieren?
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
Oder dies zu ORDER BY die früheste Bestellung pro 3x services
Spalten
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)