Bonjour à tous,
J'ai une requête qui me pose problème dans un projet de site web.
J'ai une table produit et une table test. Sur chaque produits peuvent être effectués plusieurs tests et ces tests possèdent un champ num_test qui indique si le test est le premier, deuxième, ... ou n-ème test effectué sur le produit.
Je souhaite récupérer avec une requête tous les derniers tests effectués sur tous les produits. Pour ce faire j'utilisais jusqu'à présent la requête suivant :
Le problème de cette requête est que lorsque le nombre de test sur un produit était trop important (au dela du millier de tests), cette dernière devenait beaucoup trop longue à s’exécuter à cause de la clause :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT t.* FROM test t WHERE t.num_test = (SELECT MAX(num_test) FROM test WHERE product_id = t.product_id)J'ai donc pensé à utiliser cette nouvelle requête qui semble s'éxecuter plus rapidement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE product_id = t.product_id
mais je ne sais pas comment traduire ce SELECT imbriqué sous Doctrine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT t.* FROM (SELECT * FROM test order by num_test desc ) t GROUP BY product_id
Je voulais donc savoir comment écrire cela sous Doctrine et si il y a une meilleur solution pour réaliser ce genre de requête.
Merci d'avance
Partager