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

MS SQL Server Discussion :

REQUETE AVEC 2 COUNT AVEC 1 CONDITION POUR CHAQUE COUNT


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Par défaut REQUETE AVEC 2 COUNT AVEC 1 CONDITION POUR CHAQUE COUNT
    Bonjour

    Est-il possible de faire une requête avec 2 COUNT, avec pour chaque COUNT une condition (dénommée X et Y dans l'exemple ci-dessous), le tout en une seule requête:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT COUNT(MATABLE.MACOLONNE1)
    FROM MATABLE
    WHERE MATABLE.MACOLONNE1 IN 
    (SELECT MACOLONNE
    FROM MATABLE
    WHERE MATABLE.MACOLONNE_N = CONDITION_X),
    SELECT COUNT(MATABLE.MACOLONNE1)
    FROM MATABLE
    WHERE MATABLE.MACOLONNE1 IN 
    (SELECT MACOLONNE
    FROM MATABLE
    WHERE MATABLE.MACOLONNE_N = CONDITION_Y)

    Evidemment cela ne marche pas, mais est-ce un problème de syntaxe (j'obtiens:
    Serveur*: Msg 102, Niveau 15, État 1, Ligne 6
    Syntaxe incorrecte vers ','.) ou tout simplement ce n'est pas possible

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 29
    Par défaut
    Bonjour.

    Si j'ai bien compris, tu essayes d'obtenir en 1 ligne, des COUNT provenant de deux requêtes différentes.
    Il faut donc que tu procèdes en deux étapes et que tu récupères le tout après.

    Dans ton cas, cela donne :

    SELECT * FROM
    (
    SELECT COUNT(MATABLE.MACOLONNE1) AS cpt1
    FROM MATABLE
    WHERE MATABLE.MACOLONNE_N1 = <<condition1>>
    ) tb1
    ,
    (
    SELECT COUNT(MATABLE.MACOLONNE1) AS cpt2
    FROM MATABLE
    WHERE MATABLE.MACOLONNE_N2 = <<condition2>>
    ) tb2

    Tu constateras que j'ai retiré ton WHERE .. IN qui est est très gourmand en temps et qui (dans le cas présent, même nom de table) n'apporte rien.

    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Par défaut
    Merci beaucoup, c'est exactement ce que je voulais

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Ou alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT SUM(CASE WHEN MATABLE.MACOLONNE_N1 = <<condition1>> THEN 1 ELSE 0 END) AS cpt1
    , SUM(CASE WHEN MATABLE.MACOLONNE_N2 = <<condition2>> THEN 1 ELSE 0 END) AS cpt2
    FROM MATABLE

  5. #5
    Membre confirmé
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Par défaut
    Pas mal et plus court encore!

    Merci beaucoup

  6. #6
    Membre confirmé
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Par défaut DISTINCT
    Je m'aperçois en fait que j'ai besoin -aprés avoir enrichi ma requête- de l'équivalent de COUNT (DISTINCT xxx) plutôt que de COUNT (xxx)

    Où insère t'on un DISTINCT dans la requête de Rei Ichido?

    (Dans la requête de beretb c'est buien sûr évident)

    Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2015, 14h44
  2. Réponses: 0
    Dernier message: 23/06/2011, 11h28
  3. Erreur SQl pour select count avec critere date
    Par fdalyon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/05/2010, 19h50
  4. [SQL] Recherche SQL avec la correspondance de la TVA pour chaque pays
    Par bb62 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/04/2008, 15h53
  5. Réponses: 3
    Dernier message: 18/11/2006, 20h21

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