[Doctrine] SELECT imbriqué
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 :
Code:
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) |
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:
WHERE product_id = t.product_id
J'ai donc pensé à utiliser cette nouvelle requête qui semble s'éxecuter plus rapidement :
Code:
1 2 3
|
SELECT t.* FROM (SELECT * FROM test order by num_test desc ) t
GROUP BY product_id |
mais je ne sais pas comment traduire ce SELECT imbriqué sous Doctrine.
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