Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 10/10/2011, 16h50   #1
Membre à l'essai
 
Inscription : septembre 2005
Messages : 121
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 121
Points : 24
Points : 24
Par défaut question débutant sur clé primaire

bonjour a tous

j'ai une table "materiel" et une table "marque".
La table "materiel" contient un champ vers la clé
primaire de la table "marque".
Comment puis-je faire un "Select" sur la table "materiel",
qui me renvoi le nom de la marque, au lieu de la clé primaire ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
marque :
 
idx int NOT NULL AUTO_INCREMENT
nom varchar(50) NOT NULL DEFAULT
PRIMARY KEY (idx)
 
materiel :
 
idx int NOT NULL AUTO_INCREMENT
idx_marque int NULL DEFAULT 0	'clé primaire "marque"
reference varchar(100) NULL default ''
etc...
bubu92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 17h15   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Oui, bien sûr, en mettant les deux tables en jointure
Code MySQL :
1
2
3
SELECT nom, reference
FROM materiel
INNER JOIN marque ON marque.idx=materiel.idx_marque
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 17h42   #3
Membre à l'essai
 
Inscription : septembre 2005
Messages : 121
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 121
Points : 24
Points : 24
Merci beaucoup pour la reponse

malheureusement, j'aurais du préciser que dans ma table
"materiel", j'ai aussi un champs "nom"..., et le select me renvoi
toujours le "nom" du materiel, alors que j'aurais aimé récuperer
le "nom" de la marque
bubu92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 18h35   #4
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Préfixe les noms des colonnes du nom des tables.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 21h11   #5
Membre à l'essai
 
Inscription : septembre 2005
Messages : 121
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 121
Points : 24
Points : 24
Je redoutais cette reponse manifestement ya pas d'autre
solutions..
Encore merci pour ton aide
bubu92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 12h12   #6
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Tu peux aussi aliasser le nom de colonne : SELECT marque.nom AS nom_marque
Par exemple.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 12h52   #7
Membre à l'essai
 
Inscription : septembre 2005
Messages : 121
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 121
Points : 24
Points : 24
J'ai preferé préfixer les noms des champs du nom de la
table, ça m'parait beaucoup plus propre

Juste qu'a un moment dans mon code, dans une jointure
sur 3 tables, Mysql m'a affiché un "ambiguous name detected"
ou quelque chose comme ça, j'ai precisé la table de cette maniere :

Code :
SELECT marque.marque_id...
je n'sais pas si c'etait la bonne methode, mais le message MYSQL
a disparu, et tout fonctionne correctement
Encore merci pour ton aide
bubu92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 14h25   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
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 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
C'est une bonne méthode mais pour éviter de répéter le nom de la table partout, utilise des alias, ça facilite la relecture de la requête.
Code :
1
2
3
SELECT a.col1, b.col2
FROM une_table a
INNER JOIN une_autre_table b ON b.id = a.idB
__________________
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 02h36.


 
 
 
 
Partenaires

Hébergement Web