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

Langage SQL Discussion :

Concaténation de deux requêtes


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 75
    Points
    75
    Par défaut Concaténation de deux requêtes
    Bonjour,
    j'ai besoin d'obtenir dans une même requête si pour un lot de produits donné, on ne trouve aucun produit dont le numéro est inférieur à 100 ou aucun dont le numéro est supérieur à 100.
    En gros concaténer ces deux requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count(*)
    FROM produit
    WHERE no_lot = '430249'
    and efl_no_produit<100
    having count(*)=0
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count(*)
    FROM produit
    WHERE no_lot = '430249'
    and efl_no_produit>100
    having count(*)=0
    Je sais que la solution doit être sous mes yeux, mais là je sèche...

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    je ne comprends pas ton select, tu le fais sur count(*) alors que tu connais sa valeur?
    de plus une clause HAVING sans clause GROUP BY, cela me semble bizarre

    sinon un simple UNION ne suffirait pas?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 75
    Points
    75
    Par défaut
    Oui je me suis trompé c'est plutôt ceci que je voudrais faire en une fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT count(*)
    FROM produit
    WHERE no_lot = 430268
    and no_produit<100
     
    SELECT count(*)
    FROM produit
    WHERE no_lot = 430268
    and no_produit>100
    Un union me m'arrange pas dans mon cas.

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    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
     
    SELECT 
              T1.CompteInf
             , T2.CompteSup
    FROM
    (
     SELECT 
              count(*) AS CompteInf
    FROM 
            produit
    WHERE 
             no_lot = 430268
       AND no_produit<100
    ) T1,
    (
    SELECT 
              count(*) AS CompteSup
    FROM 
            produit
    WHERE 
              no_lot = 430268
        AND no_produit>100
    ) T2
    Mais je ne vois pas l'utilité... et je rejoins @Cybher


  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    aucun produit dont le numéro est inférieur à 100 ou aucun dont le numéro est supérieur à 100.
    En gros tu veux donc compter tt ceux qui sont différents de 100 ?
    Sinon, si tu veux le détail tu peux tjours faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 	SUM (CASE WHEN no_produit < 100 THEN 1 ELSE 0 END) AS "<100",
    	SUM (CASE WHEN no_produit > 100 THEN 1 ELSE 0 END) AS ">100"
    FROM 	Produit
    WHERE 	no_lot = 430268
    GROUP BY no_lot

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 75
    Points
    75
    Par défaut
    Merci TheLeadingEdge, ta solution me convient très bien.

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

Discussions similaires

  1. Concaténation de deux requêtes au sein d'un composant
    Par Croaker dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 04/04/2011, 16h35
  2. Concaténer deux requêtes
    Par deviant dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/03/2010, 19h56
  3. Concaténation de deux tableaux
    Par mego dans le forum Langage
    Réponses: 6
    Dernier message: 19/11/2008, 12h52
  4. [postges] concaténation de deux identifiants
    Par Alex35 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 27/10/2005, 17h37
  5. Concaténation de deux integer pour former une clé primaire
    Par stoukou dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 08/09/2005, 11h34

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