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

Langage SQL Discussion :

Recherche dans plusieurs tables


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Recherche dans plusieurs tables
    Bonjour,

    J'ai plusieurs tables avec un champ commun qui est initialisé à F, et un autre champ dont la définition est identique à toutes les tables.
    Est-il possible de récupérer les enregistrements dont le champ commun n'est pas initialisé à F ?
    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
     
    table 1
    t11   t12   t13
    1      toto  F  
    2      titi    F
    3      tutu  F
     
    table 2
    t21   t22   t23
    1      tata  F
    2      tutu  F
    3      toto  F
     
    table 3
    t31   t32   t33
    1      tutu  F
    2      roro  Z
    3      titi  F
    L'élément 3 est retourné.

    Cela n'est pas trop compliqué pour certaine personne, mais j'avoue que je sèche.
    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Je ne comprends pas bien la question...

    Que signifie l'élément 3 ?
    La table 3 ?
    La ligne 3 ? De quelle table ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    C'est normal que vous ne compreniez pas ?

    Dans les colonnes t11, t21 et t31, c'est la ligne 2 de la table 3. De plus, il peut y avoir Null au lieu de la valeur 'Z'.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    Je pense que c'est normal que l'on comprenne pas.. c pas clair ton truc.

    L'élément 3 est retourné.
    puis ensuite à la question Que signifie l'élément 3 ? tu répond :

    Dans les colonnes t11, t21 et t31, c'est la ligne 2 de la table 3.
    Relis-toi tu va voir, c'est pas clair du tout...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Je vais essayer de simplifier le problème.
    Voici le contenu 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
     
     
    TABLE 1
    t11   t12   t13
    1      toto  F  
    2      titi    F
    3      tutu  F
     
    TABLE 2
    t21   t22   t23
    1      tata  F
    2      tutu  F
    3      toto  F
     
    TABLE 3
    t31   t32   t33
    1      tutu  F
    3      titi  F
    Les colonnes t11, t21 et t31 sont clés primaires et sont comparées entre elles.
    t11=t21 et t11=t31
    Est-il possible d'obtenir une requete qui retourne la valeur 2, valeur se trouvant dans les tables 1 et 2 et non dans la table 3.

    Merci

  6. #6
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * 
    FROM `TABLE1`, `TABLE2`, `TABLE3` 
    WHERE NOT (
    `TABLE1`.`T11`=`TABLE2`.`T21` AND
    `TABLE1`.`T11`=`TABLE3`.`T31` AND
    `TABLE1`.`T21`=`TABLE3`.`T31`
    )
    ou alors en équivalence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * 
    FROM `TABLE1`, `TABLE2`, `TABLE3` 
    WHERE  
    `TABLE1`.`T11`<>`TABLE2`.`T21` AND
    `TABLE1`.`T11`<>`TABLE3`.`T31` AND
    `TABLE1`.`T21`<>`TABLE3`.`T31`

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse.

    En simplifiant de nouveau.
    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
    24
    25
    26
    27
    28
    29
    30
     
     
    TABLE 1
    t11   t12   t13
    1      toto  F  
    2      titi    F
    3      tutu  F
     
    TABLE 2
    t11   t22   t13
    1      tata  F
    2      tutu  F
    3      toto  F
     
    TABLE 3
    t11   t32   t13
    1      tutu  F
    3      titi    F
     
    TABLE 4
    t11   t42   t13
    1      aaa4  F  
    2      bbb4  F
    3      ccc4   F 
     
    TABLE 5
    t11   t52   t13
    1      aaa5  F  
    2      bbb5  F
    3      ccc5   F
    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
     
     
    SELECT * 
    FROM `TABLE1`, `TABLE2`, `TABLE3`,  `TABLE4`,  `TABLE5`,  
    WHERE NOT (
    `TABLE1`.`T11`=`TABLE2`.`T11` AND
    `TABLE1`.`T11`=`TABLE3`.`T11` AND
    `TABLE1`.`T11`=`TABLE4`.`T11` AND
    `TABLE1`.`T11`=`TABLE5`.`T11` AND
    `TABLE2`.`T11`=`TABLE3`.`T11` AND
    `TABLE2`.`T11`=`TABLE4`.`T11` AND
    `TABLE2`.`T11`=`TABLE5`.`T11` AND
    `TABLE3`.`T11`=`TABLE4`.`T11` AND
    `TABLE3`.`T11`=`TABLE5`.`T11` AND
    `TABLE4`.`T11`=`TABLE5`.`T11` AND
    )
    J'obtiens plusieurs fois la ligne 2. J'ai essayé de faire un distinct sur t11 mais lequel choisir ??

  8. #8
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    n(n-1)/2 ou traduit :

    nb_jointure = nb_table*(nb_table -1)/2

    Donc pour 5 tables -> 10 jointures

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Peux tu m'indiquer comment retourner 1 seule valeur, à savoir 2.
    Merci

  10. #10
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    ton critère de sélection que tu as présenté hier porte uniquement sur l'identifiant (t11) :

    Les colonnes t11, t21 et t31 sont clés primaires et sont comparées entre elles.
    t11=t21 et t11=t31
    Est-il possible d'obtenir une requete qui retourne la valeur 2, valeur se trouvant dans les tables 1 et 2 et non dans la table 3.
    Tu ne précise rien d'autre. Donc dans ce cas tous les identifiants (t11) qui ne sont pas commun a toute les tables sont retourné.
    En clair dans ton exemple, "il n'existe pas de valeur unique t11 commun a toute les tables".

    Donc pas la peine de chercher "LA" valeur manquante dans la TABLE 3, puisque cette valeurs diffère (par son absence) dans chacune des autres TABLE :
    TABLE 1
    2 titi F

    TABLE 2
    2 tutu F

    TABLE 4
    2 bbb4 F

    TABLE 5
    2 bbb5 F

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci quand meme.

Discussions similaires

  1. Recherche dans plusieurs tables
    Par cyscek dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/05/2012, 20h42
  2. recherche dans plusieurs tables
    Par cyscek dans le forum Débuter
    Réponses: 10
    Dernier message: 15/05/2012, 11h46
  3. [MySQL] recherche dans plusieurs tables
    Par minimoof dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/08/2007, 07h58
  4. recherche dans plusieurs tables
    Par rostomides dans le forum Bases de données
    Réponses: 7
    Dernier message: 16/03/2007, 08h34
  5. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 18h04

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