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 :

Affichage de somme de tables


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 25
    Points
    25
    Par défaut Affichage de somme de tables
    Bonjour,

    j'ai fait une requête qui affiche le nombre total de commerce et d'événements d'un utilisateur, le soucis c'est que j'aimerais aussi afficher le nom de ceux-ci, mais le problème c'est que j'ai essayé d'insérer nom après le count mais ça génère une erreur voici mon code si quelqu'un pouvait m'aider je l'en remercie d'avance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT sum(t.nombre) FROM
    (SELECT count(*) AS nombre FROM commerce WHERE commerce.id_user=36
    union ALL
    SELECT count(*) FROM evenement WHERE evenement.id_user=36
    ) AS t
    la il affiche juste la colonne sum(t.nombre) avec le total mais je voudrais qu'il y ait aussi une colonne nom avec le nom du commerce ou de l'événement

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    La réponse est ici.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    soit j'ai mal cherché dans le lien soit je me suis mal fait comprendre :s

    en fait j'ai une table événement et une table commerce

    un utilisateurs peut avoir des événements et des commerces

    s'il a 2 annonces et 3 commerces je veux que ça affiche un total de 5 et les noms(le nom de l'evenement si c'est un evenement ou du commerce si c'est un commerce)

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    Est-ce que pour cet utilisateur il ne peut y avoir qu'un seul commerce et un seul évènement ?
    Sinon, lequel veut tu afficher ?

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 108
    Points
    108
    Par défaut
    Bonjour.

    Si j'ai bien tout compris, tu voudrais que dans la même requête, le résultat retourné soit
    - 1 ligne contenant le nombre total
    - 1 ligne par commerce ou par événement contenant le nom de l'objet.

    Voici une proposition si cela est bien ce que tu cherches

    Soit les tables

    commerce
    NOM_COMMERCE ID_USER
    1 comm1 35
    2 comm2 35
    3 comm3 35
    4 comm1 36
    5 comm2 36
    6 comm3 36

    evenement
    NOM_EVENT ID_USER
    1 event1 34
    2 event2 34
    3 event3 34
    4 event4 34
    5 event1 36
    6 event2 36
    7 event3 36
    8 event4 36


    utilisateur
    ID_USER NOM
    1 34 user34
    2 35 user35
    3 36 user36

    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
    36
    37
    38
    39
    40
    41
    42
     
    with commerce as 
    ( 
      SELECT 'comm1' as nom_commerce, 35 as id_user from dual UNION ALL 
      SELECT 'comm2' as nom_commerce, 35 as id_user from dual UNION ALL 
      SELECT 'comm3' as nom_commerce, 35 as id_user from dual UNION ALL 
      SELECT 'comm1' as nom_commerce, 36 as id_user from dual UNION ALL 
      SELECT 'comm2' as nom_commerce, 36 as id_user from dual UNION ALL 
      SELECT 'comm3' as nom_commerce, 36 as id_user from dual 
    ), evenement as 
    ( 
      SELECT 'event1' as nom_event, 34 as id_user from dual UNION ALL 
      SELECT 'event2' as nom_event, 34 as id_user from dual UNION ALL 
      SELECT 'event3' as nom_event, 34 as id_user from dual UNION ALL 
      SELECT 'event4' as nom_event, 34 as id_user from dual UNION ALL 
      SELECT 'event1' as nom_event, 36 as id_user from dual UNION ALL 
      SELECT 'event2' as nom_event, 36 as id_user from dual UNION ALL 
      SELECT 'event3' as nom_event, 36 as id_user from dual UNION ALL 
      SELECT 'event4' as nom_event, 36 as id_user from dual 
    ), utilisateur as 
    ( 
      SELECT 34 as id_user, 'user34' as nom FROM DUAL UNION ALL 
      SELECT 35 as id_user, 'user35' as nom FROM DUAL UNION ALL 
      SELECT 36 as id_user, 'user36' as nom FROM DUAL 
    ) 
    SELECT donnees.id_user, donnees.QUOI, donnees.data 
    FROM 
    ( 
      SELECT tot.id_user, '1-NOMBRE TOTAL' as QUOI, to_char(count(1)) data FROM 
      ( SELECT u.id_user FROM evenement e INNER JOIN utilisateur u ON u.id_user = e.id_user 
        UNION ALL 
        SELECT u.id_user FROM commerce c INNER JOIN utilisateur u ON u.id_user = c.id_user 
      ) tot 
      GROUP BY tot.id_user 
      UNION ALL 
       SELECT u.id_user, '2-EVENEMENT' as QUOI, e.nom_event FROM evenement e INNER JOIN utilisateur u ON u.id_user = e.id_user 
      UNION ALL 
       SELECT u.id_user, '3-COMMERCE' as QUOI, c.nom_commerce FROM commerce c INNER JOIN utilisateur u ON u.id_user = c.id_user 
    ) donnees 
    --Where donnees.id_user = 36 
    ORDER BY donnees.id_user, donnees.QUOI
    ;
    te donne le résultat suivant

    ID_USER QUOI DATA
    34 1-NOMBRE TOTAL 4
    34 2-EVENEMENT event2
    34 2-EVENEMENT event4
    34 2-EVENEMENT event3
    34 2-EVENEMENT event1
    35 1-NOMBRE TOTAL 3
    35 3-COMMERCE comm2
    35 3-COMMERCE comm3
    35 3-COMMERCE comm1
    36 1-NOMBRE TOTAL 7
    36 2-EVENEMENT event4
    36 2-EVENEMENT event3
    36 2-EVENEMENT event1
    36 2-EVENEMENT event2
    36 3-COMMERCE comm1
    36 3-COMMERCE comm2
    36 3-COMMERCE comm3

    En espérant avoir répondu à ta demande.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    je voudrais que l'affichage soit du style :

    ID USER NOM
    36 toto(commerce)
    36 tutu(event)
    36 titi (event)
    36 tyty(commerce)
    TOTAl
    4

    bien sûr les parenthèses ne doivent pas être affichées ^^

    edit : même si le total est affiché en fin de chaque ligne c'est bon aussi

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    j'ai essayé comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count(t.nom) as total, t.nom FROM
    (SELECT nom AS nom FROM commerce WHERE commerce.id_user=36
    union ALL
    SELECT nom FROM evenement WHERE evenement.id_user=36
    ) AS t
    il m'affiche le total et le nom comme ça, mais le nom que du premier commerce, j'ai essayé aussi comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count(t.nom) as total, t.nom FROM
    (SELECT nom AS nom FROM commerce WHERE commerce.id_user=36
    union ALL
    SELECT nom FROM evenement WHERE evenement.id_user=36 
    ) AS t GROUP BY t.nom
    mais cette fois au lieu d'obtenir pour l'utilisateur 36 un résultat pareil :
    nom total
    dfsdf 5
    sdfsd 5
    sdffd 5
    zerze 5
    ezrze 5

    (5car il y en a 5 au total)
    j'obtiens :

    nom total
    qsd 1
    qsdf 1
    sdfz 3

    edit : c'est bon j'ai résolu mon problème tout seul en chipottant
    merci quand même pour vos réponses il fallait faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT COUNT( t.nom ) AS total, t.nom
    FROM (
     
    SELECT nom AS nom, id
    FROM commerce
    WHERE commerce.id_user =36
    UNION ALL 
    SELECT nom, id
    FROM evenement
    WHERE evenement.id_user =36
    ) AS t
    GROUP BY t.id
    en fait je me rends compte que je me suis cassé la tête pour rien ... parce qu'il me suffit de renvoyer tous les noms dans un tableau directement et en php je connaîtrais le total en fonction de la taille du tableau

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Plus simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COALESCE(nom, 'TOUT'), count(nom) AS total 
    FROM   commerce 
    WHERE  commerce.id_user=36
    GROUP  BY ROLLUP (nom);
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Affichage aléatoire depuis une table
    Par Winch44 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 11/01/2007, 17h54
  2. pb affichage donnée d'une table
    Par steve o'steen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 17/10/2006, 10h47
  3. Somme Colonne table
    Par Volixium dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/10/2006, 01h52
  4. Réponses: 5
    Dernier message: 08/03/2006, 03h42
  5. [VB.Net] Affichage de données dans table HTML
    Par Off$ide dans le forum ASP.NET
    Réponses: 7
    Dernier message: 04/11/2005, 13h58

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