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 :

Combiner trois demandes SQL en une seule demande


Sujet :

Langage SQL

  1. #1
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Par défaut Combiner trois demandes SQL en une seule demande
    Bonjour,

    j´ai 3 demandes SQL que j´execute séparement et j´aimerais savoir si c´est possible de combiner les 3 demandes afin d´avoir une seule demande Sql qui me donnerai un tableau a 4 Colonnes.
    Si c est possible de faire cette combinaison en Sql, SVP comment le faire? je suis nullen langage SQL

    voila mes differentes demandes et le resultat de leur execution en foto.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    USE BarForce SELECT CONVERT(date, FirstInProductionDate) AS Datum, COUNT(CONVERT(date, FirstInProductionDate)) As FirstInProductionDate FROM SlitteApp WHERE FirstInProductionDate IS NOT NULL AND CONVERT(date, FirstInProductionDate) >= DATEADD("D", -30, getdate()) GROUP BY CONVERT(date, FirstInProductionDate) ORDER BY CONVERT(date, FirstInProductionDate)
    USE BarForce SELECT CONVERT(date, FirstDownloadBtnIOSDate) AS Datum1, COUNT(CONVERT(date, FirstDownloadBtnIOSDate)) AS FirstDownloadBtnIOSDate FROM SlitteApp WHERE FirstDownloadBtnIOSDate IS NOT NULL AND CONVERT(date, FirstInProductionDate) >= DATEADD("D", -30, getdate()) GROUP BY CONVERT(date, FirstDownloadBtnIOSDate) ORDER BY CONVERT(date, FirstDownloadBtnIOSDate)
    USE BarForce SELECT CONVERT(date, FirstDownloadBtnAndroidDate) AS Datum2, COUNT(CONVERT(date, FirstDownloadBtnAndroidDate)) AS  FirstDownloadBtnAndroidDate FROM SlitteApp WHERE FirstDownloadBtnAndroidDate IS NOT NULL AND CONVERT(date, FirstInProductionDate) >= DATEADD("D", -30, getdate()) GROUP BY CONVERT(date, FirstDownloadBtnAndroidDate) ORDER BY CONVERT(date, FirstDownloadBtnAndroidDate)
    Nom : Foto5.jpg
Affichages : 176
Taille : 652,7 Ko

    Merci pour votre Reponse
    cordialement

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vite fait, vous pouvez faire comme ceci :
    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
    29
    30
    31
    32
    33
    34
    35
    USE BarForce
     
    With src as
    (
      SELECT CONVERT(date, FirstInProductionDate) AS Datum
           , COUNT(CONVERT(date, FirstInProductionDate)) As FirstInProductionDate
           , 1 as src
        FROM SlitteApp
       WHERE FirstInProductionDate IS NOT NULL
         AND CONVERT(date, FirstInProductionDate) >= DATEADD("D", -30, getdate())
    GROUP BY CONVERT(date, FirstInProductionDate)
       UNION ALL
      SELECT CONVERT(date, FirstDownloadBtnIOSDate) AS Datum1
           , COUNT(CONVERT(date, FirstDownloadBtnIOSDate)) AS FirstDownloadBtnIOSDate
           , 2
        FROM SlitteApp
       WHERE FirstDownloadBtnIOSDate IS NOT NULL
         AND CONVERT(date, FirstInProductionDate) >= DATEADD("D", -30, getdate())
    GROUP BY CONVERT(date, FirstDownloadBtnIOSDate)
       UNION ALL
      SELECT CONVERT(date, FirstDownloadBtnAndroidDate) AS Datum2
           , COUNT(CONVERT(date, FirstDownloadBtnAndroidDate)) AS  FirstDownloadBtnAndroidDate
           , 3
        FROM SlitteApp
       WHERE FirstDownloadBtnAndroidDate IS NOT NULL
         AND CONVERT(date, FirstInProductionDate) >= DATEADD("D", -30, getdate())
    GROUP BY CONVERT(date, FirstDownloadBtnAndroidDate)
    )
      select Datum
           , sum(case src when 1 then FirstInProductionDate       else 0 end) as FirstInProductionDate
           , sum(case src when 2 then FirstDownloadBtnIOSDate     else 0 end) as FirstDownloadBtnIOSDate
           , sum(case src when 3 then FirstDownloadBtnAndroidDate else 0 end) as FirstDownloadBtnAndroidDate
        from src
    group by Datum
    order by Datum asc;

  3. #3
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Par défaut
    Bonjour,
    merci pour votre proposition, je l ai essayer mais j obtiens une erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 102, Level 15, State 1, Line 28
    Incorrect syntax near ')'.
    j´ai pensé que l´erreur s´affichait parceque j ai copié le code à partir de la page Web. j ´ai donc essayé de réecrire le meme code sur une nouvelle fenetre mais l´erreur apparait toujours.?
    j´ai aussi remarqué que vous avez enlever la partie du code ORDER BY.......
    Merci pour vos suggestions
    Nom : s5.jpg
Affichages : 152
Taille : 333,7 Ko

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    A première vue, d'après votre capture d’écran... il manque la fin de la requête ! Ceci explique cela.

  5. #5
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Par défaut
    oui mais la fin de la requete est une acollade ")" que j ´ai bien mis.
    meme quand j ajoute 2, 3 acollade j´obtiens la meme erreur. j´ai bien compter et verifier si tous mes acollades etaient fermées

    merci
    cordialement

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous avez mal copié / collé la requête.
    La requête que j'ai écrite se termine par order by Datum asc; .

    En haut à droite de la fenêtre du code, vous avez un texte cliquable qui dit : "Sélectionner tout".
    Cliquez dessus, copiez, collez !

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    oui, mais la requete de Waldar contient une expression de table commune, (src en l'occurence)
    Cela suppose une requete sur cette CTE (il s'agit en quelque sorte d'une vue valable pour la requete, mais dans votre cas, vous ne faites pas de requete sur cette vue)

    Donc, soit vous ajoutez la requete sur la CTE, soit vous exécutez directement la requete de la CTE (c'est à dire sans le WITH src AS ()

  8. #8
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Par défaut
    Bonjour,
    desolé j´avais vraiment mal copier. Mais j´obtiens cette Erreur: les 2 dernieres colonnes ne sont pas valides. et lorsque je commente les 2 lignes d erreurs seul le tableau de "FirstInProductionDate" s´affiche.
    merci pour vos reponses
    Nom : S9.jpg
Affichages : 152
Taille : 357,4 Ko

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    il faut spécifier FirstInProductionDate à chaque fois (dans la dernière partie de la requête).

    Faites un copier/coller de votre requête (entre balises code : bouton # de l'éditeur) plutôt qu'une capture d'écran, qui en plus masque une partie de la requête.

  10. #10
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Par défaut
    c´est a ce niveau du code que j´obtiens l erreur.(les 2 lignes commentées. apres le "then" les lignes sont soulignées en rouges)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     select Datum
           , sum(case src when 1 then FirstInProductionDate       else 0 end) as FirstInProductionDate
           --, sum(case src when 2 then FirstDownloadBtnIOSDate     else 0 end) as FirstDownloadBtnIOSDate
           --, sum(case src when 3 then FirstDownloadBtnAndroidDate else 0 end) as FirstDownloadBtnAndroidDate
        from src
    group by Datum
    order by Datum asc;
    voila l erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Msg 207, Level 16, State 1, Line 31
    Invalid column name 'FirstDownloadBtnIOSDate'.
    Msg 207, Level 16, State 1, Line 32
    Invalid column name 'FirstDownloadBtnAndroidDate'.
    merci

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Comme l'a indiqué aieeeuuuuu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      select Datum
           , sum(case src when 1 then FirstInProductionDate else 0 end) as FirstInProductionDate
           , sum(case src when 2 then FirstInProductionDate else 0 end) as FirstDownloadBtnIOSDate
           , sum(case src when 3 then FirstInProductionDate else 0 end) as FirstDownloadBtnAndroidDate
        from src
    group by Datum
    order by Datum asc;

  12. #12
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    a remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     select Datum
           , sum(case src when 1 then FirstInProductionDate       else 0 end) as FirstInProductionDate
           , sum(case src when 2 then FirstInProductionDate       else 0 end) as FirstDownloadBtnIOSDate
           , sum(case src when 3 then FirstInProductionDate       else 0 end) as FirstDownloadBtnAndroidDate
        from src
    group by Datum
    order by Datum asc;

  13. #13
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Par défaut
    Ok fonctionne
    Merci

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

Discussions similaires

  1. [MySQL] Réunir 3 requêtes SQL en une seule
    Par Furil dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/06/2013, 11h08
  2. rassembler trois courbes .fig en une seule
    Par best12 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/03/2013, 07h20
  3. affichage d'une seule demande
    Par yousron dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2007, 10h41
  4. [SQL] En une seule requête
    Par Spaccio dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/06/2006, 20h38
  5. [sql] Retourner une seule ligne..
    Par b_lob dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/05/2006, 15h15

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