Aide pour requête SQL

Résolu
blasterofmetal Messages postés 430 Statut Membre -  
blasterofmetal Messages postés 430 Statut Membre -
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

  1. Morgothal Messages postés 1350 Statut Membre 184
     
    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
    1. blasterofmetal Messages postés 430 Statut Membre 65
       
      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
    2. Morgothal Messages postés 1350 Statut Membre 184
       
      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
    3. blasterofmetal Messages postés 430 Statut Membre 65
       
      Simplement parfait !
      Merci :)
      0
  2. blasterofmetal Messages postés 430 Statut Membre 65
     
    UP !
    0