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 :

Affichage d'une table selon les critères d'une autre


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 33
    Points
    33
    Par défaut Affichage d'une table selon les critères d'une autre
    Bonjour,

    Je sais que mon titre de post n'est pas très clair mais je vais essayer de mettre bien à plat mon problème, simple à mon avis...

    J'ai 2 tables SQL dans ma base :
    Table A (ID, Nom, Prenom)
    Table B (ID, Adresse, Telephone)

    Le champ ID est une clé primaire et unique.

    Je souhaiterais afficher seulement les champs de la table A dont le champ "ID" serait identique à de la table B et dont le champ "Adresse" contiendrait le mot clé "keyword"

    Quelqu'un a-t-il une idée ?

    N'hésitez pas à me demander de reformuler mon problème si je me suis mal exprimer !

    Merci d'avance pour 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 799
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Table A (ID, Nom, Prenom)
    Table B (ID, Adresse, Telephone)
    J'espère que les tables ne s'appellent pas comme ça mais plutôt par exemple "personne" et "coordonnées" ?

    Le champ ID est une clé primaire et unique.
    Si c'est le cas dans les eux tables, et puisque, apparemment, il y a correspondance entre les ID des personnes et des adresses, autrement dit que l'ID des coordonnées est aussi une clé étrangère référençant une personne, pourquoi ne pas avoir regroupé ces informations dans une seule table puisqu'il ne semble y a avoir qu'une ligne de coordonnées par personne ?

    Je souhaiterais afficher seulement les champs de la table A dont le champ "ID" serait identique à de la table B et dont le champ "Adresse" contiendrait le mot clé "keyword"
    Autrement dit, tu veux seulement les personnes qui ont une ligne correspondante dans la table des coordonnées avec une adresse contenant "keyword". Bizarre d'avoir ce mot dans une adresse !

    Il te suffit de faire une jointure entre les deux tables.
    Tu essaies tout seul ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Salut CinePhil,

    Évidemment mes tables ne s'appellent pas "Table A" ni "Table B", je voulais faire un exemple simple car dans mon cas de figure les tables contiennent beaucoup plus de champs.

    Bref, admettons que ces tables s'appellent "personne" et "coordonnees" et qu'il est interdit de fusionner les informations de ces 2 tables en 1.

    Pour le mot clé "keyword" c'est aussi bien évidemment un exemple...
    On va donc dire que ce soit le mot clé "Avenue"...

    En effet, c'est bien la requête que je veux faire :
    Je veux afficher par exemple le Nom, Prénom d'une personne dont l'adresse contiendrait (entre autre) le mot "Avenue"

    J'ai déjà été jeter un oeil dans les cours mais je n'arrive pas à trouver la syntaxe et le type de jointure à effectuer pour ma requête...

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Tu veux donc les lignes des deux tables qui ont le même ID ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT a.nom, a.prenom, b.adresse, b.telephone
    FROM tableA a
    INNER JOIN tableB b ON b.id = a.id
    Et comme tu ne veux que les adresses contenant "avenue", tu ajoutes une restriction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.nom, a.prenom, b.adresse, b.telephone
    FROM tableA a
    INNER JOIN tableB b ON b.id = a.id
    WHERE b.adresse LIKE '%avenue%'

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Ça y est, après plusieurs tentatives, j'ai enfin trouvé la bonne syntaxe pour ma jointure ! Ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT p.nom, c.adresse
    FROM personnes p, coordonnees c 
    WHERE p.id = c.id 
    AND adresse LIKE '%Avenue%'
    Encore merci de ton aide CinePhil !

    Trif'

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par trifly Voir le message
    Ça y est, après plusieurs tentatives, j'ai enfin trouvé la bonne syntaxe pour ma jointure !
    Non ! La bonne syntaxe, c'est depuis 1992 - presque 20 ans ! - avec JOIN !


    Ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT p.nom, c.adresse
    FROM personnes p
    INNER JOIN coordonnees c ON p.id = c.id
    WHERE  adresse LIKE '%Avenue%'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 17/03/2015, 22h42
  2. MAJ Champs d'une table selon sa valeur et une table de correspondance
    Par eduardo9231 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/06/2012, 10h53
  3. Réponses: 18
    Dernier message: 09/12/2010, 20h40
  4. [AC-97] Update d'une table selon les données d'une autre
    Par coyote90 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 06/11/2009, 15h44
  5. Réponses: 4
    Dernier message: 22/05/2007, 14h42

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