IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Deux requêtes en une seule?


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 144
    Points : 62
    Points
    62
    Par défaut Deux requêtes en une seule?
    Bonjour,

    voila j'ai deux requêtes comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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

  2. #2
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 287
    Points
    7 287
    Par défaut
    Tu veux dire retourner les résultats de la première et de la seconde?

    Essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    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;
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  3. #3
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 144
    Points : 62
    Points
    62
    Par défaut
    Merci mais UNION dans mon cas ne fonctionne pas puisque je n'ai pas le meme nombre de colonnes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    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,
            n.stat
    FROM
            mail e, ne n 
     
    WHERE 
            e.ref_pers=n.ref_int AND
            e.sta=0 AND 
            n.sta=-1 
    ORDER BY mail;

  4. #4
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 287
    Points
    7 287
    Par défaut
    Citation Envoyé par pcsystemd Voir le message
    Merci mais UNION dans mon cas ne fonctionne pas puisque je n'ai pas le meme nombre de colonnes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    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,
            n.stat
    FROM
            mail e, ne n 
            
    WHERE 
            e.ref_pers=n.ref_int AND
            e.sta=0 AND 
            n.sta=-1 
    ORDER BY mail;
    Oui mais tu ne l'avais pas précisé dans ton premier post

    Sinon tu peux tricher un peu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    SELECT DISTINCT
            LCase(e.no) AS mail,
    	'' AS "stat"
    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,
            n.stat AS "stat"
    FROM
            mail e, ne n 
     
    WHERE 
            e.ref_pers=n.ref_int AND
            e.sta=0 AND 
            n.sta=-1 
    ORDER BY mail;
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  5. #5
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 144
    Points : 62
    Points
    62
    Par défaut
    Merci beaucoup cela fonctionne.

  6. #6
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 287
    Points
    7 287
    Par défaut
    Pas de quoi!
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Deux requêtes dans une seule requête, est-ce possible ?
    Par Stephane_br dans le forum Développement
    Réponses: 3
    Dernier message: 08/07/2011, 15h35
  2. requête sql qui joint deux champs dans une seule chaine
    Par marwacht dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/05/2011, 10h29
  3. [MSSQL 2K5] PBM pour mixer deux requêtes en une seule
    Par fredfred dans le forum Langage SQL
    Réponses: 6
    Dernier message: 05/07/2010, 15h12
  4. Deux COUNT dans une seule requête
    Par aya02 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/07/2010, 10h17
  5. [Oracle] Deux COUNT dans une seule requête
    Par EvilJajuka dans le forum Débuter
    Réponses: 5
    Dernier message: 30/09/2009, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo