Я написал этот пункт:
WHERE ec.etudiant = po.utilisateurEtudiant
С этим у меня есть ученик, где это равенство. Теперь я хотел бы преобразовать этот запрос. Я хочу получить "Для каждого студента с идентификатором" e c .etudiant ", которого я не нахожу в" po.utilisateurEtudiant "... я делаю что-то. Как я могу получить это? Если возможно, избегайте LEFT JOIN ON : Я ищу решение в ГДЕ напрямую (по конкретной c причине, связанной с Symfony и моим кодом).
Спасибо за ваши ответы. 7,8,9 было примером. Я нужен настоящий динамический запрос c, который может сохранить только разницу между "po.utilisateurEtudiant" (содержит для ПРИМЕРА 7,8) и "e c .etudiant" (содержит 7,8,9, поэтому я хочу что мой запрос вернул мне ТОЛЬКО 9). И оставьте только часть "po.utilisateurEtudiant", которую "e c .etudiant" не содержит. Я пытался с NOT EXISTS в течение 1 часа, и я никогда не получаю то, что хочу: / Мой завершенный запрос (Symfony 4):
{
return $em->createQuery(
"SELECT u.nomUtilisateur, u.prenomUtilisateur, ec.id AS ec_id
FROM App\Entity\CoursPlanning h
INNER JOIN App\Entity\Cours c
JOIN App\Entity\ProfCours p
JOIN App\Entity\Utilisateur u
JOIN App\Entity\CoursPlanning cp
JOIN App\Entity\EtudiantCours ec
JOIN App\Entity\PlageHoraire w
JOIN App\Entity\DateCours d
JOIN App\Entity\Formation f
JOIN App\Entity\Pointage po
WHERE u.roles = '[\"ROLE_USER\"]'
AND cp.cours = '".$idCours."'
AND cp.dateCours = '".$idDate."'
AND po.cours = cp.id
AND po.plageHoraire = cp.plageHoraire
AND po.utilisateurEtudiant = u.id
AND NOT EXISTS (SELECT 1 FROM App\Entity\EtudiantCours es
WHERE po.utilisateurEtudiant = es.etudiant )
"
)->getResult();
}
Этот запрос возвращает мне пустой результат. Но если я сделаю (в НЕ СУЩЕСТВУЮЩЕМ): "po.utilisateurEtudiant = 7", я получу 8. Или: если я сделаю "" po.utilisateurEtudiant = 8 ", я получу 7.
Спасибо Заранее!