Posez votre question Signaler

{PostgreSQL} Deux requêtes en une seule? [Résolu]

pcsystemd 423Messages postés 10 mai 2008Date d'inscription 1 mars 2012Dernière intervention - Dernière réponse le 9 juil. 2009 à 15:48
Bonjour,
voila j'ai deux requetes comme suit :
SELECT DISTINCT
        LCase(e.no) as mail
FROM
        ne n
        join pers*i on (n.ref_int = i.id)
        join mail e on (e.ref_pers = i.id)
WHERE
        n.ref IN (select id from site where idr = 'www.tot.com') and
        n.st = 0 and
        i.st = 0 and
        e.st = 0 and
        n.id > 0 and
        i.id > 0 and
        e.id > 0 
	ORDER BY mail;

puis
SELECT 
        LCase(e.no) as mail
FROM
        mail e, ne n 
        
WHERE 
        e.ref_pers=n.ref_int and
        e.sta=0 and 
        n.sta=-1 
        ORDER BY mail;

Ma question est comment en faire qu'une seule? Est ce possible?
Merci
Lire la suite 

{PostgreSQL} Deux requêtes en une seule »

4 réponses
Réponse
+1
moins plus
Bonjour,

Tu peux utiliser UNION
SELECT DISTINCT
        LCase(e.no) as mail
FROM
        ne n
        join pers*i on (n.ref_int = i.id)
        join mail e on (e.ref_pers = i.id)
WHERE
        n.ref IN (select id from site where idr = 'www.tot.com') and
        n.st = 0 and
        i.st = 0 and
        e.st = 0 and
        n.id > 0 and
        i.id > 0 and
        e.id > 0 
	ORDER BY mail
UNION
SELECT 
        LCase(e.no) as mail
FROM
        mail e, ne n 
        
WHERE 
        e.ref_pers=n.ref_int and
        e.sta=0 and 
        n.sta=-1 
        ORDER BY mail;

A plus
Ajouter un commentaire
Réponse
+0
moins plus
ça n'a pas l'aire de fonctionner avec UNION car ça me sort une erreur quand j'execute la requete :

ERREUR: erreur de syntaxe sur ou près de « UNION »
LINE 16: UNION
^
Merci
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

J'ai oublié de retirer ORDER BY dans les deux select, il faut le mettre à la fin
SELECT DISTINCT
        LCase(e.no) as mail
FROM
        ne n
        join pers*i on (n.ref_int = i.id)
        join mail e on (e.ref_pers = i.id)
WHERE
        n.ref IN (select id from site where idr = 'www.tot.com') and
        n.st = 0 and
        i.st = 0 and
        e.st = 0 and
        n.id > 0 and
        i.id > 0 and
        e.id > 0 
UNION
SELECT 
        LCase(e.no) as mail
FROM
        mail e, ne n 
WHERE 
        e.ref_pers=n.ref_int and
        e.sta=0 and 
        n.sta=-1 
ORDER BY mail;

A plus
Ajouter un commentaire
Réponse
+0
moins plus
Merci cela fonctionne.
Ajouter un commentaire
Ce document intitulé « {PostgreSQL} Deux requêtes en une seule? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?