[SQL] une requête non ordinaire ...

une requête non ordinaire ... [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 24-04-2002 à 15:31:01    

J'ai une table film.
J'ai une table personne
J'ai une table poste
J'ai une table fpp qui fait le lien entre les trois tables
 
Je veux pour un film, le réalisateur et le producteur mais la requête doit retourner le tout sur la même ligne
 
Donc j'obtiens facilement le réalisateur d'un film X (jeu de mot !!!)
 

Code :
  1. select nomfilm, nompersonne
  2.   from film f, personne p, poste q, fpp l
  3. where f.idfim = l.idfilm
  4.    and p.idpersonne = l.idpersonne
  5.    and q.idposte = l.idposte
  6.    and f.nomfilm= X
  7.    and q.nomposte = 'realisateur'


 
Et idem pour le producteur du même film X.
 

Code :
  1. select nomfilm, nompersonne
  2.   from film f, personne p, poste q, fpp l
  3. where f.idfim = l.idfilm
  4.    and p.idpersonne = l.idpersonne
  5.    and q.idposte = l.idposte
  6.    and f.nomfilm= X
  7.    and q.nomposte = 'producteur'


 
Mais je voudrais faire les deux requetes en une seul !!!

Code :
  1. select nomfilm, nompersonne, nompersonne
  2. ...


 
Où le 1° nom est celui du réalisateur et le 2° celui du producteur (avec NULL si l'un des deux n'existe pas mais il faut quand même que la ligne soit éditée).
 
Merci d'avance !!!

Reply

Marsh Posté le 24-04-2002 à 15:31:01   

Reply

Marsh Posté le 24-04-2002 à 15:47:56    

à mon avis, les 3 tables reliées par une seule, c pas terrible. Je crois qu'il faudrait revoir la structure de ta DB.
 
Mais en gardant ce que t'as fais, tu peux essayer avec 2 alias différents pour personne et poste. Je suis pas sur, mais sur un malentendu, ca peut p-e marcher ;)

Reply

Marsh Posté le 24-04-2002 à 16:42:53    

neobth a écrit a écrit :

à mon avis, les 3 tables reliées par une seule, c pas terrible. Je crois qu'il faudrait revoir la structure de ta DB.
 
Mais en gardant ce que t'as fais, tu peux essayer avec 2 alias différents pour personne et poste. Je suis pas sur, mais sur un malentendu, ca peut p-e marcher ;)  




 
En fait c'est pas ma DB alors je ne suis pas sur qu'elle soit comme ça mais y'a au moins les trois tables !!!
 
Euh c'est quoi un alias ?

Reply

Marsh Posté le 24-04-2002 à 16:46:23    

DarkOli a écrit a écrit :

J'ai une table film.
J'ai une table personne
J'ai une table poste
J'ai une table fpp qui fait le lien entre les trois tables
 
Je veux pour un film, le réalisateur et le producteur mais la requête doit retourner le tout sur la même ligne
 
Donc j'obtiens facilement le réalisateur d'un film X (jeu de mot !!!)
 

Code :
  1. select nomfilm, nompersonne
  2.   from film f, personne p, poste q, fpp l
  3. where f.idfim = l.idfilm
  4.    and p.idpersonne = l.idpersonne
  5.    and q.idposte = l.idposte
  6.    and f.nomfilm= X
  7.    and q.nomposte = 'realisateur'


 
Et idem pour le producteur du même film X.
 

Code :
  1. select nomfilm, nompersonne
  2.   from film f, personne p, poste q, fpp l
  3. where f.idfim = l.idfilm
  4.    and p.idpersonne = l.idpersonne
  5.    and q.idposte = l.idposte
  6.    and f.nomfilm= X
  7.    and q.nomposte = 'producteur'


 
Mais je voudrais faire les deux requetes en une seul !!!

Code :
  1. select nomfilm, nompersonne, nompersonne
  2. ...


 
Où le 1° nom est celui du réalisateur et le 2° celui du producteur (avec NULL si l'un des deux n'existe pas mais il faut quand même que la ligne soit éditée).
 
Merci d'avance !!!  




 
As tu le droit au requetes imbriquees?
 
Renaud

Reply

Marsh Posté le 24-04-2002 à 17:13:05    

un alias, c un nom temporaire que tu donnes à un objet (ici une table) à l'intérieur d'une requête.
 
Exemple : FROM film f, personne p
f et p sont des alias de film et personne.

Reply

Marsh Posté le 24-04-2002 à 20:04:30    

BOn, vite fait je répond, mais c ptre pas ce ke tu attend
 
Tu fais ton 1er select UNION ton 2eme select. t'a tout sur la meme ligne, mais je garantie pas le resultat d:

Reply

Marsh Posté le 24-04-2002 à 20:05:37    

neobth a écrit a écrit :

un alias, c un nom temporaire que tu donnes à un objet (ici une table) à l'intérieur d'une requête.
 
Exemple : FROM film f, personne p
f et p sont des alias de film et personne.  




 
Ok, donc je les utilisais sans  savoir ce que c'etait (sans connaître le nom).


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 24-04-2002 à 20:06:26    

- Renaud - a écrit a écrit :

 
As tu le droit au requetes imbriquees?
Renaud  




 
Surement, donne ta solution quand même je verrais bien si ça marche !!!  :D


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 24-04-2002 à 21:59:31    

DarkOli a écrit a écrit :

 
 
Surement, donne ta solution quand même je verrais bien si ça marche !!!  :D  




 
en fait neobth a raison, il faut utiliser les alias,  
 
le debut devrait etre ca:
 

Code :
  1. select nomfilm as nom, p1.nompersonne as realisateur, p2.nompersonne as producteur
  2. from film f, personne p1, personne p1, poste q1, poste q2, fpp l

Reply

Sujets relatifs:

Leave a Replay

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