2011-04-09 2 views
2

J'ai la requête complexe suivante dans mySQLmysql aux critères() dans symfony 1.4.9

SELECT courseId,courseName 
FROM course WHERE courseId NOT IN (SELECT courseId FROM coursestaken NATURAL JOIN student WHERE grade >= 60 AND studentId =2) 
AND 
courseId NOT IN (SELECT courseId FROM stable WHERE studentId = 2) 
AND 
courseId NOT IN (SELECT DISTINCT courseId FROM prerequisites 
WHERE 
prereqId NOT IN (SELECT courseId FROM coursestaken NATURAL JOIN student WHERE grade >= 60 AND studentId =2 )) ; 

que quelqu'un peut me aider à convertir ce à une requête de critères() Propel?

+0

aussi bien essayer d'éviter trop de sous-requêtes, elle conduit généralement à des problèmes de performance. –

Répondre

4

Essayez d'utiliser la fonction de préparer Propel comme ci-dessous

$con=Propel::getConnection(); 
      $obj = $con->prepare("SELECT courseId,courseName 
FROM course WHERE courseId NOT IN (SELECT courseId FROM coursestaken NATURAL JOIN student WHERE grade >= 60 AND studentId =2) 
AND 
courseId NOT IN (SELECT courseId FROM stable WHERE studentId = 2) 
AND 
courseId NOT IN (SELECT DISTINCT courseId FROM prerequisites 
WHERE 
prereqId NOT IN (SELECT courseId FROM coursestaken NATURAL JOIN student WHERE grade >= 60 AND studentId =2 )) "); 
      $obj->execute(); 
      $resultset = $obj->fetchAll(); 
+4

+1 pour cela. N'essayez pas de créer des instructions Criteria lorsque SQL est complexe - en particulier lorsque vous ne renvoyez pas d'objet (s) hydraté (s). Utilisez ce lien comme guide pour utiliser correctement Propel: http://propel.posterous.com/how-can-i-write-this-query-using-an-orm – Raise

+1

+1 pour un commentaire monsieur, merci pour guide et lien de partage. –

Questions connexes