Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2011, 14h42   #1
Invité de passage
 
Inscription : avril 2009
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 42
Points : 3
Points : 3
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 !
trifly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 15h14   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 003
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 003
Points : 18 265
Points : 18 265
Envoyer un message via MSN à CinePhil
Citation:
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" ?

Citation:
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 ?

Citation:
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 ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 15h32   #3
Invité de passage
 
Inscription : avril 2009
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 42
Points : 3
Points : 3
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...
trifly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 16h18   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 003
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 003
Points : 18 265
Points : 18 265
Envoyer un message via MSN à CinePhil
Tu veux donc les lignes des deux tables qui ont le même ID ?

Code :
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 :
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%'
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 09h14   #5
Invité de passage
 
Inscription : avril 2009
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 42
Points : 3
Points : 3
Ça y est, après plusieurs tentatives, j'ai enfin trouvé la bonne syntaxe pour ma jointure ! Ça donne :

Code :
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'
trifly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 09h24   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 003
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 003
Points : 18 265
Points : 18 265
Envoyer un message via MSN à CinePhil
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 :
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%'
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h48.


 
 
 
 
Partenaires

Hébergement Web