Bonjour tout le monde.
J'obtiens ce que je veux, certes, mais peux mieux faire.
Je ne voulais pas ne pas réussir par moi même, maintenant que j'ai réussi je souhaite avoir de l'aide pour mieux avancer, mieux comprendre la logique SQL.
Avant toute chose, le résultat de cette requête me servira pour construire une nouvelle requête, elle deviendra donc une sous-requête.
Le principe : des concouristes votes pour le produit qu'ils préfèrent dans 3 catégories
J'ai donc trois tables + 1 table relationnelle:
utilisateurs: [uti_id][uti_nom] ...
categories: [cat_id][cat_label]...
produits: [pro_id][pro_cat_id][nb_votes]...
votes: [vt_uti_id][vt_pro_id]
Donc si je fais une jointure sur chacune de ces tables ( ce dont je n'ai pas besoin ) j'obtiens le résultat suivant:
Ce que je souhaite c'est d'avoir le résultat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 uti_id | uti_nom | cat_id | cat_label |pro_id | pro_cat_id | vt_uti_id | vt_pro_id | nb_votes 1 | iseult | 1 | dessin | 12 | 1 | 1 | 12 | 5320 1 | iseult | 2 | peinture | 75 | 2 | 1 | 75 | 1235 1 | iseult | 3 | photo | 125 | 3 | 1 | 125 | 723 2 | théo | 1 | dessin | 14 | 1 | 1 | 14 | 6251 2 | théo | 2 | peinture | 75 | 2 | 1 | 75 | 1235 2 | théo | 2 | photo | 120 | 2 | 1 | 120 | 125
uti_id | pro_id de la cat_1 AS dessin | pro_id de la cat_2 AS peinture | pro_id de la cat_3 AS photo
1 | 12 | 75 | 125
2 | 14 | 75 | 120
Alors j'y arrive mais c'est tiré par les cheveux....
Merci à toutes et tous pour votre aide et précieux conseils
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT uti_id, (select vt_pro_id FROM te_votes_vt INNER JOIN te_produits_pro ON te_votes_vt.vt_pro_id=te_produits_pro.pro_id WHERE pro_cat_id=1 AND vt_uti_id=uti_id) AS dessin, (select vt_pro_id FROM te_votes_vt INNER JOIN te_produits_pro ON te_votes_vt.vt_pro_id=te_produits_pro.pro_id WHERE pro_cat_id=2 AND vt_uti_id=uti_id) AS peinture, (select vt_pro_id FROM te_votes_vt INNER JOIN te_produits_pro ON te_votes_vt.vt_pro_id=te_produits_pro.pro_id WHERE pro_cat_id=3 AND vt_uti_id=uti_id) AS photo FROM te_utilisateurs_uti INNER JOIN te_votes_vt ON te_utilisateurs_uti.uti_id=te_votes_vt.vt_uti_id INNER JOIN te_produits_pro ON te_votes_vt.vt_pro_id=te_produits_pro.pro_id GROUP BY uti_id ORDER BY uti_id
et désolé pour les tabulations de tableaux un peu pourries...
Partager