[RESOLU] Requête SQL et ORDER BY sur une table différente

Eléphanteau du PHP | 22 Messages

30 nov. 2012, 20:15

Bonsoir à vous tous,
Je sèche sur un requête MSQL !?

J'ai deux tables :

Guitares :
----------
Id_gui
nom_gui
...
id_coul
----------

Puis la table
Couleurs
----------
id_coul
nom_coul
...
ordre_coul
----------

J'aimerais chercher (et afficher) toutes les différentes "couleurs" (de façon distincte) du modèle de guitare choisi (critères de sélection) Mais en l'ordonnant suivant "ordre_coul".
Pour un type de guitare afficher les différentes couleurs, ordonnées, disponibles..

SELECT DISTINCT(g.id_coul), c.ordre_coul FROM Guitares AS G INNER JOIN Couleurs AS c ON ( (crit1 LIKE 'X') AND (crit2 LIKE 'X')) ORDER BY c.ordre_coul

Mais cela ne fonctionne pas comme je le veux !?
Auriez vous une idée ?
Merci de votre aide
Django

ViPHP
xTG
ViPHP | 7331 Messages

30 nov. 2012, 20:39

Il te manque ta condition de jointure entre les deux tables (l'actuelle est en fait un filtre WHERE sur une table). :)

Par contre je ne comprends pas ces LIKE, le modèle de guitare est connu non ? Alors on devrait retrouver une simple égalité.
On n'orthographie pas un modèle de guitare de X façon différente selon moi.

Eléphanteau du PHP | 22 Messages

30 nov. 2012, 20:48

Bonsoir xTG et merci de ta réponse.

Ma condition serait (en gros) de dire que "id_coul" de la table "guitares" est liée à "id_coul" de la table "Couleurs" ?

Mais pourrais-je quand même faire un WHERE avec des critères ?
(Ex. : Rechercher les "Folks" !? Et même d'autres critères de sélection ? (Pour adulte/ enfant, 6 cordes / 12 cordes ... etc.) ?)

Pour ma condition de jointure un truc comme cela :

Code : Tout sélectionner

g.id_coul=c.id_coul
Mais comment l'intégrer ?

Code : Tout sélectionner

SELECT DISTINCT(g.id_coul), c.ordre_coul FROM Guitares AS G INNER JOIN Couleurs AS c ON (g.id_coul=c.id_coul WHERE (crit1 LIKE 'X') AND (crit2 LIKE 'X')) ORDER BY c.ordre_coul
Je ne vois pas trop.
Je vais tester ! :)
Merci
Django

Eléphant du PHP | 267 Messages

30 nov. 2012, 21:07

SELECT DISTINCT g.id_coul, c.ordre_coul
FROM Guitares AS g
INNER JOIN Couleurs AS c
ON g.id_coul = c.id_coul
WHERE crit1 LIKE 'X'
AND crit2 LIKE 'X'
ORDER BY c.ordre_coul
dix2

Eléphanteau du PHP | 22 Messages

30 nov. 2012, 21:51

Merci beaucoup à vous deux.

Dix2
Lorsque tu écris :

Code : Tout sélectionner

SELECT DISTINCT g.id_coul, c.ordre_coul ...
Il va prendre distinctement les "g.id_coul" ? Pas besoin des parenthèses ?
Et aussi les "c.ordre_coul" (qui eux, normalement, sont distincts)

Le code que tu m'as donné... fonctionne ! :o)
J'ai des petits tests à faire.
Encore merci à vous.

Django

Eléphant du PHP | 267 Messages

30 nov. 2012, 22:14

le DISTINCT concerne l'ensemble des attributs :
une ligne n'apparaitra pas si TOUS les attributs sont identiques à ceux d'une ligne déjà présente dans le jeu de résultats

ce sujet a également été débattu ici

dix2

Eléphanteau du PHP | 22 Messages

30 nov. 2012, 23:24

Merci de ta réponse et du lien.
bonne soirée (nuit!) à vous tous et merci

Django