El hecho de que en un server funcionara y en otro no puede ser por un conflicto de versiones. Habría que ver qué versión de MySQL está corriendo en cada uno.
En cuanto a la consulta en sí, yo la encuentro personalmente confusa. Me parece que estás cruzando segmentos que MySQL no puede resolver adecuadamente.
Para que se entienda mejor, un segmento de condicionales como:
Código:
AND (`S`.`assignment_id` = 1 OR `S`.`assignment_id` IS NULL )
AND `S`.`original_id` IS NULL
no pertenece al predicado de un LEFT JOIN ... ON, sino a un WHERE.
Esto es, un JOIN establece una relación entre valores de dos campos de dos tablas distintas, condición que se determina en el ON.
El segmento que escribiste no determina ningua relación entre las dos, por lo que MySQL debe estar haciendo otra cosa y entremezclandola con el ON. Es posible que esté tomando 'U.user_id' como alias o como tabla de origen de otro valor, por lo que no puede resolverlo y lo declara desconocido (estoy hipotetizando, nunca vi una consulta escrita así en todos estos años).
Mi sugerencia es que cambies de lugar ese segmento y lo pongas donde tendría uso lógico: en el WHERE, por ejemplo:
Código:
SELECT `U`.`user_id` AS `authId`,
CONCAT(`U`.`nom`, ' ', `U`.`prenom`) AS `name`,
COUNT(`S`.`id`) AS `submissionCount`, `S`.`title`,
MIN(`S`.`creation_date`)
FROM `AcaDB`.`user` as `U`, `AcaDB`.`cours_user` as `CU`
LEFT JOIN `No2008287`.`wrk_submission` AS `S`
ON `S`.`user_id` = `U`.`user_id`
WHERE `U`.`user_id` = `CU`.`user_id`
AND `CU`.`code_cours` = '2008287'
AND (`S`.`assignment_id` = 1 OR `S`.`assignment_id` IS NULL)
AND `S`.`original_id` IS NULL
GROUP BY `U`.`user_id`
ORDER BY `CU`.`statut` ASC, `CU`.`tutor` DESC,
`U`.`nom` ASC, `U`.`prenom` ASC