SELECT

SELECT - SQL/NoSQL - Programmation

Marsh Posté le 03-06-2006 à 01:19:27    

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!

Reply

Marsh Posté le 03-06-2006 à 01:19:27   

Reply

Marsh Posté le 03-06-2006 à 07:37:31    

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
Reply

Marsh Posté le 04-06-2006 à 23:14:37    

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

Reply

Marsh Posté le 04-06-2006 à 23:22:28    

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 = "...";

Reply

Marsh Posté le 05-06-2006 à 14:21:16    

radioh a écrit :

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


 
 
et bien tu fais plusieurs jointures  :o

Reply

Marsh Posté le 05-06-2006 à 14:47:31    

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

Reply

Marsh Posté le 05-06-2006 à 17:50:59    

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
Reply

Marsh Posté le 05-06-2006 à 19:24:30    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed