Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1384 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SELECT

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SELECT

n°1380327
radioh
Posté le 03-06-2006 à 01:19:27  profilanswer
 

Salut tout le monde,  
 
bon voilà, il y a quelque chose que je n'arrive pas à résoudre... je m'explique :  
 
J'ai créé deux tables : Une table "CD" et une table "ARTISTES".... je les ai créées comme ceci :  
 
 
create table artistes (
 id serial PRIMARY KEY,
 nom varchar(50) UNIQUE NOT NULL
);
 
create table cd (
 id serial PRIMARY KEY,
 titre varchar(50) NOT NULL,
 artiste_id INTEGER NOT NULL,
 FOREIGN KEY(artiste_id) references artistes(id),
);
 
Donc dans ma table CD, j'ai un pointeur qui part du champ "artiste_id" et qui pointe sur le "id" de la table "artistes".  
 
Ma question est la suivante : Comment je fais pour chercher une ligne de ma table CD pour que j'obtienne le titre et le NOM de l'artiste et non pas son id...
 
merci bcp!

mood
Publicité
Posté le 03-06-2006 à 01:19:27  profilanswer
 

n°1380334
pikti
I’ve done worse
Posté le 03-06-2006 à 07:37:31  profilanswer
 

Tu dois faire une jointure
 

Code :
  1. select art.nom, cd.titre
  2. from artistes art
  3. inner join cd on cd.artiste_id = art.id


 
dans ce sens ou dans l'autre
 

Code :
  1. select art.nom, cd.titre
  2. from cd
  3. inner join artistes art on art.id = cd.artiste_id


 
ou avec "where"
 

Code :
  1. select art.nom, cd.titre
  2. from artistes art, cd
  3. where art.id = cd.artiste_id


Message édité par pikti le 03-06-2006 à 07:44:36
n°1381042
radioh
Posté le 04-06-2006 à 23:14:37  profilanswer
 

merci !  
 
comment on fait pour faire un join sur plusieurs tables ?

n°1381046
kalex
Posté le 04-06-2006 à 23:22:28  profilanswer
 

Si j'ai bien compris, c'est un code dans ce genre qu'il te faut :
 
SELECT artistes.NOM FROM cd
LEFT JOIN artistes ON artistes.ID = cd.artiste_id
WHERE TITRE = "...";

n°1381310
pikti
I’ve done worse
Posté le 05-06-2006 à 14:21:16  profilanswer
 

radioh a écrit :

merci !  
 
comment on fait pour faire un join sur plusieurs tables ?


 
 
et bien tu fais plusieurs jointures  :o

n°1381334
moi23372
Posté le 05-06-2006 à 14:47:31  profilanswer
 

OU
 
SELECT artistes.NOM  
FROM cd, artistes
WHERE cd.artiste_id  = artistes.id

n°1381517
radioh
Posté le 05-06-2006 à 17:50:59  profilanswer
 

super merci ! ca marche ! g un autre problème ! un gros !
 
j'aimerais updater plusieurs tables à la fois :  
 
create table artiste (
 id_artiste serial PRIMARY KEY,
 nom_artiste varchar(50) UNIQUE NOT NULL
);
 
create table label (
 id_label serial PRIMARY KEY,
 nom_label varchar(50) UNIQUE NOT NULL
);
 
create table cd (
 id_cd serial PRIMARY KEY,
 titre_cd varchar(50) NOT NULL,
 artiste_id INTEGER NOT NULL,
 label_id INTEGER NOT NULL,
 FOREIGN KEY(artiste_id) references artiste(id_artiste),
 FOREIGN KEY(label_id) references label(id_label)
);
 
Je veux pouvoir updater la table artistes ET label selon le "id" de la table CD qui est passée en parametre dans l'url ? vous me comprenez ?
 
 
Imaginons :  
 
                              TABLE CD
-------------------------------------------------------------------
id_cd         artiste_id           label_id            titre_cd
-------------------------------------------------------------------
  1                 2                     1                Ok Computer
  2                 1                     2                Neon Golden      
 
         
       TABLE ARTISTE
--------------------------------
id_artiste        nom_artiste
-------------------------------
  1                 The Not  
  2                 Radiohead    
 
 
       TABLE LABEL
--------------------------------
id_label           nom_label
-------------------------------
  1                  Parlophone
  2                  Capitol Records  
 
 
Now je veux modifier le nom de l'artiste dans la TABLE ARTISTE et le nom du label dans la TABLE LABEL, par rapport à l'entrée numéro 2 de la TABLE CD. Vous comprenez ?
 
j'ai essayé ceci :  
 
UPDATE artiste SET nom_artiste = $nom_artiste WHERE id_artiste IN (SELECT artiste_id FROM cd WHERE id_cd = '$id'); mais ca ne marche que pour UNE SEULE table !
 
P.S $id est passé en parametre dans l'url...
 

Message cité 1 fois
Message édité par radioh le 05-06-2006 à 18:04:04
n°1381597
pikti
I’ve done worse
Posté le 05-06-2006 à 19:24:30  profilanswer
 

moi23372 a écrit :

OU
 
SELECT artistes.NOM  
FROM cd, artistes
WHERE cd.artiste_id  = artistes.id


 
déjà dit :p
 
 

radioh a écrit :


j'aimerais updater plusieurs tables à la fois  


 
tu ne peux updater qu'une table à la fois


Message édité par pikti le 05-06-2006 à 19:26:13

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SELECT

 

Sujets relatifs
activer un select selon le champs d'un autre selectprobleme de select sous IE
Select menuSelect simples/multiples : bug IE6?
Problème de récupération valeur d'un select en javascript avec firefoxSELECT de la date la plus proche du jour actuel
problème d'écriture (double guillemets) SELECT values[résolu]scroll horizontal sur un select
Utiliser l'attribut SQL SELECT[php/Mysql] Probleme requete select
Plus de sujets relatifs à : SELECT


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR