Bonjour!
Je travaille sur une requête assez conséquente mais qui me pose un petite problème. Je n'arrive pas a obtenir une ligne de retour par élément recherché.

Voici la requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT e0_.id AS id0, e0_.url AS url1, e0_.name AS name2, e0_.embed AS embed3, e0_.created AS created4, e0_.updated AS updated5, m1_.id AS id6, m1_.name AS name7, m1_.slug AS slug8, m1_.description AS description9, m1_.open AS open10, e2_.id AS id11, e2_.name AS name12, t3_.id AS id13, t3_.name AS name14, t3_.count AS count15, u4_.id AS id16, m5_.username AS username17, m5_.username_canonical AS username_canonical18, m5_.email AS email19, m5_.email_canonical AS email_canonical20, m5_.enabled AS enabled21, m5_.algorithm AS algorithm22, m5_.salt AS salt23, m5_.password AS password24, m5_.last_login AS last_login25, m5_.locked AS locked26, m5_.expired AS expired27, m5_.expires_at AS expires_at28, m5_.confirmation_token AS confirmation_token29, m5_.password_requested_at AS password_requested_at30, m5_.roles AS roles31, m5_.credentials_expired AS credentials_expired32, m5_.credentials_expire_at AS credentials_expire_at33, m5_.id AS id34, m5_.slug AS slug35, e0_.element_type_id AS element_type_id36, e0_.user_id AS user_id37, e0_.group_id AS group_id38, m1_.user_id AS user_id39, u4_.user_id AS user_id40, u4_.element_id AS element_id41 
FROM element e0_ 
LEFT JOIN m_group m1_ ON e0_.group_id = m1_.id 
LEFT JOIN element_type e2_ ON e0_.element_type_id = e2_.id 
LEFT JOIN elements_tag e7_ ON e0_.id = e7_.element_id 
LEFT JOIN tag t6_ ON t6_.id = e7_.tag_id 
LEFT JOIN elements_tag e8_ ON e0_.id = e8_.element_id 
LEFT JOIN tag t3_ ON t3_.id = e8_.tag_id 
LEFT JOIN users_elements_favorites u4_ ON e0_.id = u4_.element_id AND (u4_.user_id = ?) 
INNER JOIN m_user m5_ ON e0_.user_id = m5_.id 
ORDER BY e0_.created DESC, e0_.name DESC 
LIMIT 5
Pour ce qui reconnaisses c'est une requête SQL généré avec Doctrine (2.0). Il y a beaucoup de jointures, ce qui rend un peu moins lisible la requête veuillez m'excuser.

Le retour de cette requête ressemble a ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
1  |  element1 | ...
2  |  element2 | ...
2  |  element2 | ...
3  |  element3 | ...
En gros, j'ai des doublons dans les résultats. Car ce que je cherche ici, ce sont des enregistrement de la table "element"
J'ai essayé avec un DISTINCT:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT DISTINCT e0_.id AS id0 ...
Mais j'ai le même retour.

J'ai également essayé avec un GROUP BY:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
[...]
INNER JOIN m_user m5_ ON e0_.user_id = m5_.id 
GROUP BY e0_.id, e2_.id, t3_.id, m5_.id, m1_.id, u4_.id 
ORDER BY e0_.created DESC, e0_.name DESC 
LIMIT 5
Mais les doublons sont toujours là. Il me semblerait bien pratique de faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
[...]
INNER JOIN m_user m5_ ON e0_.user_id = m5_.id 
GROUP BY e0_.id
ORDER BY e0_.created DESC, e0_.name DESC 
LIMIT 5
Mais les colonnes inclus dans le select doivent apparaître dans le group by:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ERROR: column "m1_.id" must appear in the GROUP BY clause or be used in an aggregate function
État SQL :42803
Caractère : 139
Y a t-il une solution d'après vous?