Ако добавите
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
Тогава ще видите защо други RDBMS не позволяват този синтаксис:
- 3 необобщени колони в SELECT, но една в GROUP BY
- Колоната ORDER BY не е в GROUP BY/SELECT и не е обобщена
Ако искате да ГРУПИРАТЕ ПО, а не DISTINCT, тогава трябва да ГРУПИРАТЕ ПО всички колона в ИЗБОР
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
Но тогава нямате chk.order
за подреждане по, независимо дали използвате GROUP BY или DISTINCT
Какво ще кажете за това, пълното игнориране на дубликати?
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
Или това, за да ПОРЪЧАТЕ ПО най-ранната поръчка за 3x services
колони
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)