Pb de jointure
Fermé
ephelya
Messages postés
282
Date d'inscription
mercredi 28 septembre 2011
Statut
Membre
Dernière intervention
20 juin 2023
-
Modifié le 20 nov. 2020 à 23:55
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 21 nov. 2020 à 05:33
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 21 nov. 2020 à 05:33
3 réponses
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
20 nov. 2020 à 23:56
20 nov. 2020 à 23:56
Bonjour,
AVG fonctionne avec GROUP BY
AVG fonctionne avec GROUP BY
ephelya
Messages postés
282
Date d'inscription
mercredi 28 septembre 2011
Statut
Membre
Dernière intervention
20 juin 2023
2
Modifié le 21 nov. 2020 à 00:04
Modifié le 21 nov. 2020 à 00:04
Je mets ici la requête complète, au cas où (je la trouvais un peu indigeste ;-) )
SELECT AVG(note) moy_users, iduser, results.idprod, nom,latin, description, idcat, categorie, pluriel, status, genre, ident, masculin, feminin FROM (SELECT ur.idprod, idkeyw, idtypekwd, note, ur.iduser FROM produits p LEFT JOIN user_rates ur ON ur.idprod = p.id LEFT JOIN favoris_user fu ON fu.idprod = p.id LEFT JOIN keywords k ON k.id = ur.idkeyw WHERE (masculin = 'huile' or feminin = 'huile' OR idkeyw = (SELECT master FROM keywords WHERE keyword = 'huile') OR nom LIKE '%huile%' OR keyword LIKE '%huile%') OR (masculin = 'apaisante' or feminin = 'apaisante' OR idkeyw = (SELECT master FROM keywords WHERE keyword = 'apaisante') OR nom LIKE '%apaisante%' OR keyword LIKE '%apaisante%')) notes LEFT JOIN (SELECT idprod, nom,latin, description, idcat, categorie, pluriel,p.status, cp.genre, ident, masculin, feminin FROM produits p LEFT JOIN cat_produits cp ON cp.id=p.idcat LEFT JOIN prods_key pk ON pk.idprod = p.id LEFT JOIN keywords k ON pk.idkeyw=k.id LEFT JOIN keywords_types kt ON kt.idkeyword = k.id LEFT JOIN type_keywords tk ON tk.id=kt.idtypekwd) results ON notes.idprod = results.idprod WHERE idcat IN (16, 42, 43) AND(notes.iduser = 1 OR ISNULL(notes.iduser)) GROUP BY idprod ORDER BY note DESC, nom ASC
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
21 nov. 2020 à 00:08
21 nov. 2020 à 00:08
par contre, je ne comprends pas trop l'utilité de faire deux sous-select
alors que tu pourrais faire toutes tes jointures dans une seule
un truc du genre
alors que tu pourrais faire toutes tes jointures dans une seule
un truc du genre
SELECT ur.idprod, idkeyw, idtypekwd, note, ur.iduser , nom,latin, description, idcat, categorie, pluriel,p.status, cp.genre, ident, masculin, feminin FROM produits p LEFT JOIN user_rates ur ON ur.idprod = p.id LEFT JOIN favoris_user fu ON fu.idprod = p.id LEFT JOIN keywords k ON k.id = ur.idkeyw LEFT JOIN cat_produits cp ON cp.id=p.idcat LEFT JOIN prods_key pk ON pk.idprod = p.id LEFT JOIN keywords_types kt ON kt.idkeyword = k.id LEFT JOIN type_keywords tk ON tk.id=kt.idtypekwd WHERE (masculin = 'huile' or feminin = 'huile' OR idkeyw = (SELECT master FROM keywords WHERE keyword = 'huile') OR nom LIKE '%huile%' OR keyword LIKE '%huile%') OR (masculin = 'apaisante' or feminin = 'apaisante' OR idkeyw = (SELECT master FROM keywords WHERE keyword = 'apaisante') OR nom LIKE '%apaisante%' OR keyword LIKE '%apaisante%')
ephelya
Messages postés
282
Date d'inscription
mercredi 28 septembre 2011
Statut
Membre
Dernière intervention
20 juin 2023
2
21 nov. 2020 à 05:33
21 nov. 2020 à 05:33
Oui, c'est une simple erreur de copier coller pour le group by, il figure bien sur ma requête ;-)
Par contre je me rends compte que j'ai fait une autre erreur pq en fait j'ai besoin de faire la somme des moyennes par produit (si jamais il y a plusieurs critères de recherche) et c'est pour ça que j'ai fait deux requêtes séparées, je n'ai pas su faire autrement. Sauf que j'ai fini par me planter quand même..
Je revois ça de plus près et je reviens si ça bugge toujours ! ;-)
Par contre je me rends compte que j'ai fait une autre erreur pq en fait j'ai besoin de faire la somme des moyennes par produit (si jamais il y a plusieurs critères de recherche) et c'est pour ça que j'ai fait deux requêtes séparées, je n'ai pas su faire autrement. Sauf que j'ai fini par me planter quand même..
Je revois ça de plus près et je reviens si ça bugge toujours ! ;-)