IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Recherche d'information manquantes sur deux champs et plusieurs tables


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Recherche d'information manquantes sur deux champs et plusieurs tables
    Bonjour,

    Débutant et malgré plusieurs recherches et différents tests je n’arrive pas à venir au bout de mon besoin.

    Voici mes tables :

    T1 : E_NOM, E_VALEUR
    T2 : E_ID, E_NOM
    T3 : E_ID, S_ID
    T4 : S_ID, D_VALEUR

    Exemple de données :

    - T1 -
    TATA, C:
    TATA, D:
    TATA, E:
    TITI, C:
    TITI, D:
    TITI, E:
    TOTO, C:
    TOTO, D:
    TOTO, E:

    - T2 -
    1, TATA
    2, TITI
    3, TOTO

    - T3 -
    1, 100
    1, 110
    1, 120
    2, 130
    2, 140

    - T4 -
    100, C:
    110, D:
    120, E:
    130, C:
    140, E:

    Je souhaite donc obtenir :

    TITI, D:
    TOTO, C:
    TOTO, D:
    TOTO, E:

    Merci de votre aide.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Exprime ton besoin en français, ainsi qu'une explication sur ce que contient ce modèle de données, si possible un schéma conceptuel qui nous permettrait de mieux comprendre la raison de cette architecture de données. Donne la vraie structure des tables - résultat complet des requêtes SHOW CREATE TABLE la_table - et un petit jeu de données plus signifiant que titi, toto, tata.

    Donne aussi les requêtes que tu as essayées et ce qu'elles ont donné avec explication de ce qui ne te convient pas sur le résultat obtenu.

    Pour le moment, c'est incompréhensible !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Désolé, je suis tellement dans le truc depuis plusieurs jours que je n'ai même pas vu que ce que j'écrivais étant complètement illisible.

    Voici la structure des tables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    CREATE TABLE `T1` (
     `E_NOM` varchar(50) NOT NULL,
     `E_VALEUR` varchar(50) NOT NULL,
     PRIMARY KEY  (`E_NOM`,`E_VALEUR`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1
     
    CREATE TABLE `T2` (
     `E_ID` int(11) NOT NULL default '0',
     `E_NOM` varchar(50) default NULL,
     PRIMARY KEY  (`EQ_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1
     
    CREATE TABLE `T3` (
     `S_ID` int(11) NOT NULL default '0',
     `E_ID` int(11) NOT NULL,
     PRIMARY KEY  (`SU_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1
     
    CREATE TABLE `T4` (
     `S_ID` int(11) NOT NULL default '0',
     `D_VALEUR` varchar(100) NOT NULL
     PRIMARY KEY  (`SU_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1
    TOTO, TATA et TITI ne devrait pas poser de problème à la compréhension.

    La table T1 contient une liste de noms de machines associée à la liste des partitions présentes sur ces machines.

    La table T2 contient une liste de noms de machines associée à un identifiant unique.

    La table T3 contient un numéro qui permet de valider le pointage d'une partition sur un identifiant d'équipement.

    La table T4 vient compléter le numéro de pointage avec la partition pointée.

    Mon besoin : je souhaite obtenir la liste des partitions nom, partition de T1 qui n'ont pas été pointées dans T4.

    Je n'ai pas mes requêtes sous la main mais je les poste dès que possible, en espérant que tout est maintenant plus clair !

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,


    Regardez du côté du NOT EXISTS : http://sqlpro.developpez.com/cours/s...quetes/#L1.5.1

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Simplement, je souhaite comparer ces deux listes et en sortir le diff.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT * FROM T1
     
    TATA, C:
    TATA, D:
    TATA, E:
    TITI, C:
    TITI, D:
    TITI, E:
    TOTO, C:
    TOTO, D:
    TOTO, E:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT T2.E_NOM, D_VALEUR FROM T4
    JOIN T3 ON T3.S_ID = T4.S_ID
    JOIN T2 ON T2.E_ID = T3.E_ID
     
    TATA, C:
    TATA, D:
    TATA, E:
    TITI, C:
    TITI, E:

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT T1.E_NOM, T1.E_VALEUR
    FROM T1
    WHERE NOT EXISTS
    (
    	SELECT 1
    	FROM T4
    	JOIN T3 ON T3.S_ID = T4.S_ID
    		JOIN T2 ON T2.E_ID = T3.E_ID
    	WHERE T2.E_NOM = T1.E_NOM
    		AND T4.D_VALEUR = T1.E_VALEUR
    )

Discussions similaires

  1. [SQLite] Recherche affinée sur deux champs
    Par MisterS dans le forum Android
    Réponses: 5
    Dernier message: 22/09/2011, 15h03
  2. Une Recherche sur deux champs
    Par souminet dans le forum Débuter
    Réponses: 8
    Dernier message: 04/11/2008, 13h56
  3. Réponses: 1
    Dernier message: 09/04/2007, 16h56
  4. [Oracle] Recherche de doublons sur deux champs
    Par BiM dans le forum Langage SQL
    Réponses: 28
    Dernier message: 04/01/2007, 12h52
  5. contrainte sur deux champs d'une table
    Par bdkiller dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/09/2004, 18h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo