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 :

[mysql5]additionner des SUM() de plusieurs tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Par défaut [mysql5]additionner des SUM() de plusieurs tables
    Bonjour à tous

    j'aimerais faire quelque chose qui me paraissait simple et en faite je bloque un peu dessus.
    Pour le moment je fais 3 requête comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUM(qte) FROM table1 WHERE kdo=1500;
    SELECT SUM(qte) FROM table2 WHERE kdo=1500;
    SELECT COUNT(id) FROM table3 WHERE kdo=1500;
    et j'aimerais bien regroupé ça en 1 requête (car je fais déjà ça dans une boucle donc au final je dois sortir 1000 requêtes ...)

    le truc c'est que dans les 3 tables kdo est toujours le même type de champ (ici je recherche le cadeau 1500). Dans les 2 premières table j'ai une quantité pour ce cadeau, et dans la troisième table c'est forcément en quantité "1" donc je fait un COUNT(id) car je n'ai pas de colonne QTE

    Si vous avez une idée je suis preneur

    Merci d'avance

    EDIT : l'objectif étant également pour la suite de faire un tri par rapport à cette somme des 3 tables

  2. #2
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Pour ce qui est des 2 sommes tu peux faire ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUM(T1.qte) + SUM(T2.qte)
    FROM table1 T1 inner join table2 on T1.kdo=T2.kdo
    where T1.kdo=1500

  3. #3
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Une solution pour y ajouter le count peut être celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT SUM(T1.qte) + SUM(T2.qte) + T3.C
    FROM table1 inner join table2 on table1.kdo=table2.kdo,
    (select count(*) as C from table3 where kdo=1500) T3
    where table1.kdo=1500
    group by T3.C
    A tester en MySQL car je suis sous SQL Server

  4. #4
    Membre éclairé Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Par défaut
    ça va être difficile de faire comme ça
    je pense que ça sera plus simple si je donne directement le code que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $vendu	=	$ewp->sqlGetVar	("SELECT SUM(cont.qte)
    FROM ".CONTENIR." cont
    LEFT JOIN ".COM." com ON com.id=cont.commande
    WHERE cont.kdo='".$o->id."' AND com.date LIKE '".$annee."%'");
     
    $vendu	+=	$ewp->sqlGetVar	("SELECT SUM(cont.qte)
    FROM ".CONTENIR_STIM." cont
    LEFT JOIN ".COM." com ON com.id=cont.commande
    WHERE cont.kdo='".$o->id."' AND com.date LIKE '".$annee."%'");
     
    $vendu	+=	$ewp->sqlGetVar	("SELECT COUNT(cont.id)
    FROM ".CONTENIR_CARTE." cont
    LEFT JOIN ".COM." com ON com.id=cont.commande
     WHERE cont.kdo='".$o->id."' AND com.date LIKE '".$annee."%'");
    merci d'avance

  5. #5
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Bah là tu n'es plus sur le bon forum...

    Y a un forum php/mysql donc si tu post là-bas tu auras surement une meilleure réponse...

    Ce que je peux te dire c'est que grâce à php tu peur récupérer les résultats puis faire ta somme dans un autre traitement !

  6. #6
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Je vois pas trop pourquoi ça va être difficile d'appliquer ce que j'ai fait.
    Il te suffit juste de modifier la requête pour y ajouter toutes tes variables...

  7. #7
    Membre éclairé Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Par défaut
    Citation Envoyé par Sekigawa Voir le message
    Bah là tu n'es plus sur le bon forum...
    Y a un forum php/mysql donc si tu post là-bas tu auras surement une meilleure réponse...
    Ce que je peux te dire c'est que grâce à php tu peur récupérer les résultats puis faire ta somme dans un autre traitement !
    le php ne joue pas ici dans ce que je veux faire
    c'était juste pour présenter mes trois requêtes que j'aimerais mettre en une

  8. #8
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Et pourquoi ma solution ne te plait pas alors?

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

Discussions similaires

  1. [MySQL] Récupérer des variables via plusieurs tables (32 au total ^^)
    Par streeter dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/05/2006, 17h14
  2. [Access] extraire des champs de plusieurs tables
    Par ddeee dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/04/2006, 16h45
  3. Réponses: 2
    Dernier message: 09/01/2006, 16h10
  4. [MYSQL] sortir des résultats de plusieurs table en 1 fois
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/10/2005, 15h26
  5. Réponses: 10
    Dernier message: 15/09/2005, 12h31

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