Si agrega
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
Luego verá por qué otros RDBMS no permiten esta sintaxis:
- 3 columnas no agregadas en SELECT pero una en GROUP BY
- La columna ORDER BY no está en GROUP BY/SELECT y no está agregada
Si desea AGRUPAR POR en lugar de DISTINTO, entonces debe AGRUPAR POR toda la columna en SELECCIONAR
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
Pero entonces no tienes chk.order
ordenar por, ya sea usando GROUP BY o DISTINCT
Entonces, ¿qué pasa con esto, ignorando los duplicados por completo?
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 esto para ORDENAR POR el primer pedido por 3x services
columnas
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)