Se aggiungi
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
Quindi vedrai il motivo per cui altri RDBMS non consentono questa sintassi:
- 3 colonne non aggregate in SELECT ma una in GROUP BY
- La colonna ORDINA PER non è in GROUP BY/SELECT e non è aggregata
Se vuoi GROUP BY piuttosto che DISTINCT, allora devi GROUP BY tutte le colonne in 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
Ma allora non hai chk.order
per ordinare, utilizzando GROUP BY o DISTINCT
Che ne dici di questo, ignorando completamente i duplicati?
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
O questo per ORDINARE PER il primo ordine per 3x services
colonne
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)