Se você adicionar
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
Então você verá o motivo pelo qual outros RDBMS não permitem essa sintaxe:
- 3 colunas não agregadas em SELECT, mas uma em GROUP BY
- A coluna ORDER BY não está em GROUP BY/SELECT e não está agregada
Se você quiser GROUP BY em vez de DISTINCT, precisará GROUP BY all na coluna 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
Mas então você não tem
chk.order
para encomendar, seja usando GROUP BY ou DISTINCT Então, e quanto a isso, ignorando completamente as duplicatas?
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
Ou isso para ORDER BY o primeiro pedido por 3x
services
colunas 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)