Aide pour requête SQL

Résolu/Fermé
blasterofmetal Messages postés 415 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 29 août 2013 - Modifié par blasterofmetal le 19/06/2013 à 10:04
blasterofmetal Messages postés 415 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 29 août 2013 - 19 juin 2013 à 13:11
Bonjour,
Je n'arrive pas à trouver la requête SQL permettant de faire ce que je veux.
J'ai 3 tables :
-----------------------------------
| DEVICES |
-----------------------------------
DEV_ID
TPD_ID
DSCD_ID
DEV_Label
-----------------------------------


-----------------------------------
| DESCDEVICE |
-----------------------------------
DSCD_ID
DSCD_Marque
DSCD_Modele
...
-----------------------------------

-----------------------------------
| TYPEDEVICE |
-----------------------------------
TPD_ID
TPD_Label
...
-----------------------------------

Je voudrais sélectionner TOUT de DESCDEVICE quand TPD_LABEL = "capteur".
J'ai essayé de faire plusieurs jointures, type LEFT / INNER JOIN mais je ne trouve aucune solution.

Sachant que mes clés étrangères sont bien appliquées sur la table DEVICES.
Pouvez vous m'aider ?
Merci

2 réponses

Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
19 juin 2013 à 10:17
Hello
J'essaierais ceci :

SELECT * FROM DESCDEVICE
INNER JOIN DEVICES ON DESCDEVICE.DESCD_ID=DEVICES.DESCD_ID
INNER JOIN TYPEDEVICE ON TYPEDEVICE.TPD_ID=DEVICES.TPD_ID
WHERE TYPEDEVICE.TPD_LABEL='capteur'

A+ !
1
blasterofmetal Messages postés 415 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 29 août 2013 64
19 juin 2013 à 10:57
Merci de ta réponse, ça a fonctionné du premier coups !
As tu le temps de m'expliquer un peu le principe de la requête car je la comprends pas très bien?
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
19 juin 2013 à 11:32
Le début est simple :
SELECT * FROM DESCDEVICE
Je prends tout dans DESCDEVICE


INNER JOIN DEVICES ON DESCDEVICE.DESCD_ID=DEVICES.DESCD_ID
Je joins DESCDEVICE et DEVICES sur le champs DESCD_ID. Le INNER signifie que je ne prends que les correspondances entre les deux tables.


INNER JOIN TYPEDEVICE ON TYPEDEVICE.TPD_ID=DEVICES.TPD_ID
Et je re-joins tout ça avec la table TYPEDEVICE sur le champ TPD_ID.


Ainsi tu peux mettre la condition WHERE du TYPEDEVICE sur ta sélection de DESCDEVICE (les 3 tables sont liées, du coup si tu filtres sur un champ d'une table, ça filtre toutes les lignes de toutes les tables).

A ta dispo si besoin ;-)
0
blasterofmetal Messages postés 415 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 29 août 2013 64
19 juin 2013 à 13:11
Simplement parfait !
Merci :)
0
blasterofmetal Messages postés 415 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 29 août 2013 64
19 juin 2013 à 10:09
UP !
0