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

Requêtes MySQL Discussion :

SELECT classique + Total en 1 seule requête non-imbriquée


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut SELECT classique + Total en 1 seule requête non-imbriquée
    Bonjour,

    J'ai pris connaissance il y a quelque temps d'une requête qui permettait de faire un select de valeurs dans une table, de les afficher mais également d'avoir en dernière ligne le total de ces valeurs. Malheureusement je ne l'ai pas notée ni ajoutée à ma à bibliothèque perso. L'un d'entre vous aurait-il une idée de l'instruction MySQL qui permet cela ? Je n'arrive pas à la retrouver ni sur le site officiel MySQL ni via Google (je dois utiliser les mauvais mots clés à priori), ni sur les forums de Développez.

    Voici un exemple du résultat souhaité :

    Soit 1 table "produits" et ses 4 champs "id_produit", "nom_produit", "prix_produit", "ventes"
    Je fais le select suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    1. SELECT p.id_produit AS 'id',
                  p.nom_produit AS 'nom', 
                  p.prix_produit AS 'prix', 
                  p.ventes AS 'ventes', 
                 (p.prix_produit*p.ventes) AS 'CA'
       FROM produits p
    Ce qui me donne un tableau avec 5 colonnes : id, nom, prix, ventes, CA (chiffres d'affaires)
    Et autant de lignes que de produits

    Je souhaite également avoir le total des CA, ce que j'obtiens avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    2. SELECT SUM(p.prix_produit*p.ventes) 
       FROM produits p

    Comment avoir le tableau avec en dernière ligne le résultat du 2ème SELECT, sans écrire de requête imbriquée (MySQL inférieur à 4.4) ? Et comment accéder à cette dernière valeur via Php ? Car j'imagine qu'on accède aux autres de manière classique via un mysql_fetch_assoc et un appel à l'indice correspondant et la ligne correspondante, mais à quel indice correspondrait le dernier résultat ?

    Merci d'avance aux bonnes âmes.

    Thonglith

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Plusieurs remarques ou questions :
    1/ C'est bien une ligne supplémentaire que vous souhaitez ?
    2/ Les sous-requêtes sont apparues en version 4.1 de MySQL (donc un peu plus tôt que la version 4.4 ) ;
    3/ C'est faisable en utilisant le mot-clef UNION et en mettant la deuxième requête à la suite de la première. Mais manque de chance, UNION n'est disponible que depuis la version 4.1 ... Il faut toutefois que le nombre et le type des colonnes soient les mêmes dans les 2 requêtes jointes par union.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    Je pense que le clause que tu tente de te remémorer est :


  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut Merci !!!!
    Merci à vous Ced et Kazou pour vos réponses. Et effectivement, tu as raison Kazou, c'est bien la clause WITH ROLLUP à laquelle je pensais !! Bravo, bravo, bravo !!!

    Une question cependant, je pensais qu'en créant le sujet j'étais automatiquement "abonné" et que j'étais notifié des réponses éventuelles apportées au fil de discussion. Je ne sais pas si c'est un bug, alors je vous fais remonter l'info.

    Encore Merci ! Et hop, un résolu de plus !
    Bye,

    Thonglith

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

Discussions similaires

  1. [AC-2010] Joindre requêtes SELECT et UPDATE en une seule ? Et recheche sur valeurs "similaires".
    Par Mickey7312 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 06/08/2014, 23h16
  2. [AC-2007] Requête SELECT entre enregistrements d'une seule et même table
    Par tibofo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/01/2013, 19h38
  3. Réponses: 9
    Dernier message: 09/11/2011, 17h57
  4. traquer des requêtes non bindées
    Par aline dans le forum Oracle
    Réponses: 3
    Dernier message: 14/03/2005, 11h56
  5. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 10h38

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