Hvis du tilføjer
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
Så vil du se, hvorfor andre RDBMS ikke tillader denne syntaks:
- 3 ikke-aggregerede kolonner i SELECT, men én i GROUP BY
- ORDER BY-kolonnen er ikke i GROUP BY/SELECT og er ikke aggregeret
Hvis du vil GRUPPERE EFTER frem for DISTINCT, skal du GRUPPERE EFTER alle kolonnen i 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
Men så har du ingen chk.order
at bestille efter, uanset om du bruger GROUP BY eller DISTINCT
Så hvad med dette, at ignorere dubletter fuldstændigt?
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
Eller dette for at BESTILLE VED den tidligste ordre pr. 3x services
kolonner
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)