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 08/07/2011, 15h23   #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 Requêtes sur plusieurs tables, jointures ?

Bonjour à tous !

Bon je pose peut-être ma question au mauvais moment (bientôt le week-end) mais je tente ma chance quand même !

Alors voilà, j'ai 2 tables :

Categorie1(NOM, PRENOM, PHOTO)
Categorie2(NOM, PRENOM, PHOTO, AGE, VILLE)

Je souhaiterais effectuer une requête qui afficherait tout le contenu des entrées où le champ NOM = 'DUPONT' sur les 2 tables.

J'ai regarder du côté des jointures mais je n'ai pas de lien entre ces 2 tables.
Je n'sais pas si c'est la bonne piste à suivre...

Je pensais au début faire un :
Code :
1
2
3
SELECT * 
FROM Categorie1, Categorie2 
WHERE NOM='DUPONT'
mais j'obtiens l'erreur suivante :
"Column 'NOM' in where clause is ambiguous"

Je pense que ça vient du fait que mes tables ne sont pas identiques...

Y a-t-il une façon de faire spéciale ? Les jointures sont-elles utiles dans ce cas de figure ?

Au fait, j'ai choisi volontairement de séparer les infos dans 2 catégories différentes.

Merci de votre aide !

Bon week-end à tous !
trifly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 16h07   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
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 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
Citation:
J'ai regarder du coté des jointures mais je n'ai pas de lien entre ces 2 tables.
Ben si justement, le nom !

Les jointures s'écrivent depuis 1992 avec l'opérateur JOIN. Ça fait bientôt 20 ans, il serait temps de s'y mettre !

Et comme tu fais la jointure sur le nom, il suffit de préfixer la colonne d'une des deux tables pour avoir le résultat des deux :
Code :
1
2
3
4
5
6
7
8
SELECT c2.NOM, c2.PRENOM, 
    c1.PHOTO AS photo_cat1,
    c2.PHOTO AS photo_cat2,
    c2.AGE,
    c2.VILLE
FROM categorie1 c1
INNER JOIN categorie2 c2 ON c2.NOM = c2.NOM
WHERE c2.NOM = 'DUPONT'
Par contre, si les DUPONT de categorie1 ne sont pas forcément ceux de categorie2, ce qui justifierait le fait que tu dises qu'il n'y a pas de lien entre les deux tables, alors il te faut une union de deux requêtes :
Code :
1
2
3
4
5
6
7
8
9
SELECT NOM, PRENOM, PHOTO, '' AS AGE, '' AS VILLE
FROM categorie1
WHERE NOM = 'DUPONT'
 
UNION
 
SELECT NOM, PRENOM, PHOTO, AGE, VILLE
FROM categorie2
WHERE NOM = 'DUPONT'
Citation:
Au fait, j'ai choisi volontairement de séparer les infos dans 2 catégories différentes.
Tu aurais mieux fait de faire une table des catégories et d'y associer les personnes !
Au passage, externalise les villes pour éviter redondance et erreur de saisie.

MCD :
ville -0,n----habiter----1,1- personne -1,n----appartenir----0,n- categorie

Tables :
ville (vil_id, vil_nom)
personne (prs_id, prs_id_ville, prs_nom, prs_prenom, prs_age, prs_photo)
categorie (cat_id, cat_nom)
prs_appartenir_cat (pac_id_personne, pac_id_categorie)

Bref, tu as besoin d'apprendre le SQL et la modélisation des bases de données.
Un grand tour chez SQLPro s'impose !
__________________
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é
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h12.


 
 
 
 
Partenaires

Hébergement Web