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 :

Fusionner des requêtes SQL


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Fusionner des requêtes SQL
    bonjour tout le monde
    je veux fusionner ces 3 requêtes, quelqu'un a une piste??


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT utilisateur.prenom, COUNT(abonner.IdUtilisateur) FROM `utilisateur` INNER JOIN abonner ON abonner.IdUtilisateur =utilisateur.IdUtilisateur GROUP BY utilisateur.prenom ; 
     
    SELECT utilisateur.prenom, COUNT(favoris.IdUtilisateur) FROM `utilisateur` INNER JOIN favoris ON favoris.IdUtilisateur =utilisateur.IdUtilisateur GROUP BY utilisateur.prenom ;
     
    SELECT utilisateur.prenom, COUNT(historique.IdUtilisateur) FROM `utilisateur` INNER JOIN historique ON historique.IdUtilisateur =utilisateur.IdUtilisateur GROUP BY utilisateur.prenom ;

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ca dépend comment vous voulez votre résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT utilisateur.prenom, COUNT(abonner.IdUtilisateur), 'abonne' as source FROM `utilisateur` INNER JOIN abonner ON abonner.IdUtilisateur =utilisateur.IdUtilisateur GROUP BY utilisateur.prenom
     UNION ALL
    SELECT utilisateur.prenom, COUNT(favoris.IdUtilisateur), 'favori' FROM `utilisateur` INNER JOIN favoris ON favoris.IdUtilisateur =utilisateur.IdUtilisateur GROUP BY utilisateur.prenom
     UNION ALL 
    SELECT utilisateur.prenom, COUNT(historique.IdUtilisateur), 'histo' FROM `utilisateur` INNER JOIN historique ON historique.IdUtilisateur =utilisateur.IdUtilisateur GROUP BY utilisateur.prenom ;
    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        select ut.prenom
             , coalesce(sum(ab.nb_abonnes), 0) as nb_abonnes
             , coalesce(sum(fv.nb_favoris), 0) as nb_favoris
             , coalesce(sum(hs.nb_histo  ), 0) as nb_histo
          from utilisateur                                                                           as ut
     left join (select IdUtilisateur, count(*) as nb_abonnes from abonner    group by IdUtilisateur) as ab on ab.IdUtilisateur = ut.IdUtilisateur
     left join (select IdUtilisateur, count(*) as nb_favoris from favoris    group by IdUtilisateur) as fv on fv.IdUtilisateur = ut.IdUtilisateur
     left join (select IdUtilisateur, count(*) as nb_histo   from historique group by IdUtilisateur) as hs on hs.IdUtilisateur = ut.IdUtilisateur
      group by ut.prenom;

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup

    j'ai encore 3 requêtes quand je veux appliquer le même principe ça marche pas
    /* la première renvoie le nombre des visionnage français */
    /* la deuxième renvoie le nombre de visionnage allemands*/
    /* la troisième c'est la valeur absolue des deux*/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT IdVideos, COUNT(utilisateur.IdUtilisateur) AS fr FROM historique INNER JOIN utilisateur on historique.IdUtilisateur = utilisateur.IdUtilisateur WHERE utilisateur.pays = 'france' GROUP BY IdVideos;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT IdVideos, COUNT(utilisateur.IdUtilisateur) AS al FROM historique INNER JOIN utilisateur on historique.IdUtilisateur = utilisateur.IdUtilisateur WHERE utilisateur.pays = 'allemagne' GROUP BY IdVideos;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ABS((SELECT COUNT(utilisateur.IdUtilisateur)  FROM historique INNER JOIN utilisateur on historique.IdUtilisateur = utilisateur.IdUtilisateur WHERE utilisateur.pays = 'france')- (SELECT COUNT(utilisateur.IdUtilisateur) FROM historique INNER JOIN utilisateur on historique.IdUtilisateur = utilisateur.IdUtilisateur WHERE utilisateur.pays = 'allemagne')) as VALEURABSOLUE FROM historique GROUP BY IdVideos

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    C'est tout à fait normal : la troisième requête ne restitue pas le même nombre et le même type de colonnes, il est donc interdit et ça n'aurait pas de sens de faire une "union"

    Au passage : un peu de soin dans la présentation des requêtes en facilite la lecture, toute la requête sur une seule ligne c'est illisible

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT IdVideos
         , COUNT(utilisateur.IdUtilisateur) AS al 
    FROM historique 
    INNER JOIN utilisateur 
       on historique.IdUtilisateur = utilisateur.IdUtilisateur 
    WHERE utilisateur.pays = 'allemagne' 
    GROUP BY IdVideos
    ;

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    merci pour le conseil çà m'a beaucoup aider a comprendre mon code lol

Discussions similaires

  1. Fusionner des requêtes
    Par SwiTz dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/11/2005, 22h00
  2. Fabriquer des requêtes sql à partir d'un document xml
    Par ktel dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 18/10/2005, 16h45
  3. [MFC] comment écrire des requêtes SQL
    Par kitsune dans le forum MFC
    Réponses: 9
    Dernier message: 27/09/2005, 15h23
  4. Journal des requêtes SQL effectuées
    Par Kcirtap dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 09h58
  5. Recherche ibrairie pour éxécuter des requêtes SQL via C++
    Par daemon dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 14/06/2004, 10h28

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