我写了这个子句:
WHERE ec.etudiant = po.utilisateurEtudiant
有了这个,我有那个平等的学生。现在,我想转换此请求。我想获得“对于每个在id.ec.etudiant中都没有的学生”,我在“ po.utilisateurEtudiant”中找不到...我正在做某事。我怎么才能得到它?如果可能的话,避免使用LEFT JOIN ON:我正在直接在WHERE中寻找解决方案(由于与Symfony和我的代码相关的特定原因)。
谢谢您的回答。 7,8,9是个例子。我需要一个真正的动态请求,该请求只能保留“ po.utilisateurEtudiant”(包含示例7,8)和“ ec.etudiant”(包含7,8,9)之间的区别,所以我希望我的请求返回给我仅9)。并且只保留“ po.utilisateurEtudiant”中不包含“ ec.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。
谢谢你的进步!
您将使用not exists
:
select ec.*
from ec
where not exists (select 1
from po
where ec.etudiant = po.utilisateurEtudiant
);
谢谢您的回答。 7,8,9是个例子。我需要一个真正的动态请求,该请求只能保留“ po.utilisateurEtudiant”(包含示例7,8)和“ ec.etudiant”(包含7,8,9)之间的区别,所以我希望我的请求返回给我仅9)。并且仅保留“ po.utilisateurEtudiant”不包含“ ec.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。
谢谢你前进