[PostgreSQL] vue avec jointures

vue avec jointures [PostgreSQL] - SQL/NoSQL - Programmation

Marsh Posté le 26-10-2004 à 22:33:10    

Bonjour,
 
Je cherche à faire une vue qui va sélectionner des champs issus de plusieurs tables pour pouvoir faire un select directement sur la vue.
 
J'ai plusieurs tables ou sous requêtes (table1, table2, table3) avec le même identifiant: table1.id, table2.id, table3.id.
 
Je veux obtenir un tableau du type
id        champ1        champ2    
1         toto           tata
2         titi           tutu
...
 
La requête est la suivante:
select champs from tables where  
table1.id=table2.id and
table2.id=table3.id
 
Mon soucis est un problème d'indice: Sur la même ligne j'ai des champs qui vérifient table1.id=table2.id (id=1 par exemple) et d'autres qui vérifient table2.id=table3.id (avec id=2 par exemple).
 
Comment peut-on procéder pour faire cette vue ?
 
Est-on obligé de passer par une fonction pl/pgsql avec une boucle sur id et de faire des insert dans une table à chaque itération?
for tampon in select champs from tables where  
table1.id=id and
table2.id=id and
table3.id=id loop
insert ...
end loop;
 
Dans ce cas, s'il y a des trous de numérotation dans mes id, comment faire l'itération ?
 
Merci pour l'aide.

Reply

Marsh Posté le 26-10-2004 à 22:33:10   

Reply

Marsh Posté le 26-10-2004 à 22:46:19    

Ca marche pas ça ?  
 
SELECT champs FROM (table1 t1 INNER JOIN table2 t2
        ON t1.id = t2.id)
     INNER JOIN table3 t3 ON t1.id = t3.id;
 

Reply

Marsh Posté le 27-10-2004 à 14:09:14    

Euh...
 
Poste un exemple de données (3 lignes pour chacune de tes 3 tables) et le résultat que tu veux. Ta question n'est pas claire du tout, comprend pas.
 
A priori, un simple :
 
CREATE VIEW maVue AS
select table1.id, table1.nom nom1, table2.nom nom2, table3.nom nom3
from table3, table2, table1
where table2.id = table1.id and table3.id = table2.id
 
Mais je ne vois pas trop où est le problème, puisque c'est ce que tu as posté en première ligne.


Message édité par Arjuna le 27-10-2004 à 14:09:44
Reply

Marsh Posté le 27-10-2004 à 18:31:44    

Je prends le mix entre lam's et Arjuna et je relance de 1.

Reply

Marsh Posté le 27-10-2004 à 22:07:53    

Je comprends votre embarras...
 
En créant des tables exemples, j'ai pu voir que mon problème ne venait pas du tout de ce que je pensais, car effectivement la requête fonctionne parfaitement comme l'ont dit Arjuna et Lam's.
 
Ca venait de la construction de ma requête où des sous requêtes mettaient la zizanie.
 
Désolé c'était tout bête, mais je voyais pas d'où ça venait.
 
Merci

Reply

Sujets relatifs:

Leave a Replay

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