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 :

Comment regrouper les 3requêtes SQL?


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut Comment regrouper les 3requêtes SQL?
    Bonjour à tous,

    Est ce que c'est possible de faire regrouper les 3 SQL différentes en une seule SQL? Si oui, pourriez-vous m'inquiquer un exemple avec les 3sql ci-dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(Count_MsgBR) AS total FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0'
    SELECT COUNT(Count_MsgME) AS total FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0'
    SELECT COUNT(Count_MsgMS) AS total FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0'
    Comme ca je pourrais exécuter une requete et de racourcir la programmation.

    Merci bcq de votre aide.

    Bon ap midi.

    Fred
    Cordialement

    Fred ;-)

  2. #2
    Membre actif Avatar de JerryMouse
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 215
    Points : 295
    Points
    295
    Par défaut
    Fais comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (SELECT COUNT(Count_MsgBR) AS total FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0' )
    Union all 
    (SELECT COUNT(Count_MsgME) AS total FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0' )
    Union all
    (SELECT COUNT(Count_MsgMS) AS total FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0')
    Très souvent, le plus difficile est de savoir ce que l'on veut.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    J'ai essayé, ca ne marche pas, il y a une erreur:

    ERREUR 1064: Something is wrong in your syntax près de '(SELECT COUNT(Count_MsgBR) AS total FROM `message` WHERE O_TypeM' à la ligne 1

    Merci de m'aider.

    Fred
    Cordialement

    Fred ;-)

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye sans les parenthèses
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT
     
    (SELECT COUNT(Count_MsgBR) AS total FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0' ) AS Count_1,
    (SELECT COUNT(Count_MsgME) AS total FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0' ) AS Count_2,
    (SELECT COUNT(Count_MsgMS) AS total FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0') AS Count_3

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    J'ai encore réssayé, mais finalement celà ne marche pas encore
    Voici le message d'erreur:
    ERREUR 1064: Something is wrong in your syntax près de 'SELECT COUNT(Count_MsgBR) AS total FROM `message` WHERE O_TypeMs' à la ligne 3

    Merci de votre aide.

    Fred
    Cordialement

    Fred ;-)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Salut,

    j'ai essayé avec ca et ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS total FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0'
    mais pas avec ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
     
    (SELECT COUNT(*) AS total FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0' ) AS Count_1, 
    (SELECT COUNT(*) AS total FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0' ) AS Count_2, 
    (SELECT COUNT(*) AS total FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0') AS Count_3
    même pas avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
     
    (SELECT COUNT(*) AS totalbr FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0' ) AS Count_1, 
    (SELECT COUNT(*) AS totalme FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0' ) AS Count_2, 
    (SELECT COUNT(*) AS totalms FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0') AS Count_3
    Merci de votre aide
    Cordialement

    Fred ;-)

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) AS total FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0' 
    union all
    SELECT COUNT(*) FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0' 
    union all 
    SELECT COUNT(*) FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * from
    (SELECT COUNT(*) AS totalbr FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0' ) , 
    (SELECT COUNT(*) AS totalme FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0' ) , 
    (SELECT COUNT(*) AS totalms FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0')
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Salut, celà ne marche pas encore, voici le message d'erreur pour:
    ERREUR 1064: Something is wrong in your syntax près de 'SELECT COUNT(*) AS totalbr FROM `message` WHERE O_TypeMsg = 'BR'' à la ligne 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * from 
    (SELECT COUNT(*) AS totalbr FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0' ) , 
    (SELECT COUNT(*) AS totalme FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0' ) , 
    (SELECT COUNT(*) AS totalms FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0')
    Et l'autre message d'erreur pour:
    ERREUR 1064: Something is wrong in your syntax près de 'union all
    SELECT COUNT(*) AS totalME FROM `message` WHERE O_Typ' à la ligne 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) AS totalBR FROM `message` WHERE O_TypeMsg = 'BR' AND O_Read = '0' 
    union all 
    SELECT COUNT(*) AS totalME FROM `message` WHERE O_TypeMsg = 'ME' AND O_Read = '0' 
    union all 
    SELECT COUNT(*) AS totalMS FROM `message` WHERE O_TypeMsg = 'MS' AND O_Read = '0'
    Merci de votre aide
    Cordialement

    Fred ;-)

  10. #10
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Quel SGBDR, quelle version.

    Attention la deuxième solution n'est pas exactement ce que j'ai écrit (mais devrait passer quand même)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Nom de la base de données: MySQL
    Version: 3.23.49

    Vlà, merci de votre aide
    Cordialement

    Fred ;-)

  12. #12
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je ne dispose pas de mySQL Version: 3.23.49. Vérifie dans la doc si cette version accepte les unions.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    UNION est implémentée en MySQL 4.0.0. UNION est utilisé pour combiner le résultat de plusieurs requêtes SELECT en un seul résultat.

    Il n'existe pas un autre moyen possible?

    Merci de m'aider
    Cordialement

    Fred ;-)

  14. #14
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Avec ORACLE, il y a une fonction DECODE, dont l'exemple DECODE(O_TypeMsg, 'BR', 1, 0)
    vaut 1 si O_TypeMsg = 'BR' et 0 sinon. Si tu as quelque chose d'équivalent sous mySql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT SUM(DECODE(O_TypeMsg, 'BR', 1, 0)) AS totalbr,
           SUM(DECODE(O_TypeMsg, 'ME', 1, 0)) AS totalme,
           SUM(DECODE(O_TypeMsg, 'MS', 1, 0)) AS totalms
    FROM `message` WHERE O_Read = '0'
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par pgibone
    Avec ORACLE, il y a une fonction DECODE, dont l'exemple DECODE(O_TypeMsg, 'BR', 1, 0)
    vaut 1 si O_TypeMsg = 'BR' et 0 sinon. Si tu as quelque chose d'équivalent sous mySql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT SUM(DECODE(O_TypeMsg, 'BR', 1, 0)) AS totalbr,
           SUM(DECODE(O_TypeMsg, 'ME', 1, 0)) AS totalme,
           SUM(DECODE(O_TypeMsg, 'MS', 1, 0)) AS totalms
    FROM `message` WHERE O_Read = '0'
    Celà ne marche pas également, voici message erreur: ERREUR 1064: Something is wrong in your syntax près de ' 1, 0)) AS totalbr,
    SUM(DECODE(O_TypeMsg, 'ME', 1, 0)) A' à la ligne 1


    Merci de m'aider
    Cordialement

    Fred ;-)

  16. #16
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    En dessous de la version 4, MySQL ne supporte ni les requêtes ensemblistes, ni les sous requêtes.

    Il n'y a donc pas de solution pour faire cela en SQL avec MySQL.

    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/ * * * * *

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Merci bcq de votre aide, j'avais surement deviné mais je vous remercie en tout cas pour l'aide qui m'est encore besoin pour les autres logiciels de base de donénes comme SQL Server ou Oracle ou Interbase ou etc...

    Bon week end.
    Cordialement

    Fred ;-)

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 03/11/2010, 11h33
  2. [C#] Comment gérer les erreurs SQL ?
    Par dcollart dans le forum Accès aux données
    Réponses: 1
    Dernier message: 20/06/2006, 13h01
  3. [Query Analyser] Comment supprimer les message sql server
    Par Cyborg289 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/02/2006, 16h14
  4. [DTS] Comment auditer les transformations sql faites via DTS
    Par danmick dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/08/2005, 07h40
  5. [VB6] Comment lister les serveurs SQL d'un domaine ?
    Par WOLO Laurent dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/01/2004, 08h49

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