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

Développement SQL Server Discussion :

2 COUNT sur une même jointure


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2021
    Messages : 24
    Par défaut 2 COUNT sur une même jointure
    Bonjour,

    Je dois compter le nombre de dates de fermeture de magasin vs le nombre d'ouvertures.
    J'ai une table "date" et une autre "magasin" avec la "date ouverture" et "date fermeture"

    J'utilise la requête suivante mais le résultat me renvois n'importe quoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT 
    		 DATE("Date calendrier"),
    		 COUNT(DATE(A.date_begin)) as "Date début",
    		 COUNT(DATE(B."date_end")) as "Date fin",
    		 COUNT(DATE(A.date_begin)) -COUNT(DATE(B."date_end")) as "Cumul magasin"
    FROM  "Dates"
    JOIN "magasin" AS  A ON  DATE("Dates"."Date calendrier") = DATE(A."date_begin") 
    JOIN "magasin" AS  B ON DATE("Dates"."Date zoho")  = DATE(B."date_end")  
     
    GROUP BY  "Date calendrier"
    Vous savez ce qui cloche ?
    Merci,

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 451
    Par défaut
    Bonjour,
    Je ne sais pas ce qu'il y a derrière le "n'importe quoi", mais je pense qu'il manque juste un DISTINCT dans les COUNT, pour ne compter que les dates distinctes. C'est bien ce que tu cherches ?

    Tatayo.

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2021
    Messages : 24
    Par défaut
    Ca me retourne ce résultat (alors qu'il devrait il y avoir des centaines de lignes.

    DATE(Date calendier) Date début Date fin. Cumul relais
    2020-01-15 7 7 0
    2020-06-24 5 5 0
    2020-03-04 1 1 0
    2020-06-30 7 7 0
    2020-10-28 1 1 0

    Même punition en ajoutant "DISTINCT"

    J'ai un résultat meilleur (mais pas juste dans tous les cas avec cette requête)
    Mais j'ai parfois des mélanges de date de début et dates de fin (forcément).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DISTINCT
    		 DATE("Date calendrier"),
    		 COUNT(DATE(A.date_begin)) as "Date début",
    		 COUNT(DATE(A."date_end")) as "Date fin",
    		 COUNT(DATE(A.date_begin)) -COUNT(DATE(A."date_end")) as "Cumul relais"
    FROM  "Dates"
     
    JOIN "magasin" AS  A ON DATE("Dates"."Date calendrier")  = DATE("A"."date_begin")
    OR DATE("Dates"."Date calendrier")  = DATE(A."date_end") 
     
    GROUP BY  "Date calendrier"

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 451
    Par défaut
    Il nous faudrait un jeu de test et le résultat attendu (ainsi que la description des tables en jeu), sinon on aura du mal à voir ce qui cloche ici.

    Tatayo.

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2021
    Messages : 24
    Par défaut
    Ci joint les fichiers


    Le résultat attendu c'est ne nombre de date de fin et de début par date calendrier.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 451
    Par défaut
    Je pense qu'il faut faire les deux décomptes séparément, puis "fusionner" le tout, un truc du genre:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    with cumuls(LaDate,debut,fin) as
    (
    select date_begin as LaDate,count(*),0
    from magasin
    group by date_begin
    union all
    select date_end as LaDate,0,count(*) 
    from magasin
    group by date_end
    ),
    select LaDate,sum(debut),sum(fin)
    from cumul
    inner join dates on dates."date zoho" = cumules.LaDate

    Tatayo.

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

Discussions similaires

  1. [1.x] Jointure sur une même table
    Par tyx dans le forum Symfony
    Réponses: 1
    Dernier message: 04/08/2008, 11h19
  2. Auto jointure (sur une même table)
    Par freestyler dans le forum Langage SQL
    Réponses: 16
    Dernier message: 20/05/2008, 15h16
  3. Réponses: 2
    Dernier message: 05/04/2008, 17h33
  4. un count sur une jointure et ca ne fonctionne pas
    Par elbronziero dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/10/2004, 11h23
  5. jointure sur une même table
    Par guillaumeVb6 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/09/2004, 15h08

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