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 :

Modification requête sql


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Modification requête sql
    Bonjour à toutes et à tous,

    Je compte des inscriptions à des activités pour une année, voici mes tables

    activites(num_activite,num_formateur,desigantion,date1,...)
    inscriptions(num_inscription,num_participant,num_activite,...)

    et ma requête (qui fonctionne bien):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT count(*) 
    FROM inscriptions 
    LEFT JOIN activites ON 
    inscriptions.num_activite = activites.num_activite 
    WHERE activites.date1 >= '2006-01-01' 
    AND activites.date1 <= '2006-12-31'
    Mon probléme :

    On me demande de compter les inscriptions en tenant compte de l'age des participants, les inscriptions pour les -de25 ans et de +de 25ans.

    Le champs age se trouve dans la table participant que voici :

    participants(num_participant,nom,prenom,age,...)

    Comment modifier ma requete pour tenir compte de l'age du participant ?

    Je vous remercie pour votre aide

    Nico

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT age, count(*) 
    FROM   inscriptions i
           LEFT OUTER JOIN activites a
                ON is.num_activite = a.num_activite 
    WHERE  a.date1 BETWEEN '2006-01-01' AND '2006-12-31'
    GROUP  BY age
    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/ * * * * *

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    je viens de tester la requete et voici l'erreur obtenue :

    Erreur

    requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT age, count( * ) 
    FROM inscriptions i
    LEFT OUTER JOIN activites a ON IS.num_activite = a.num_activite
    WHERE a.date1
    BETWEEN '2006-01-01' AND '2006-12-31'
    GROUP BY age
    LIMIT 0 , 30
    MySQL a répondu:

    #1054 - Champ 'age' inconnu dans field list

    Comment distinguer les - de 25 ans et les plus de 25 ans ?

    Merci

    El Bero

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Il faut rajouter une jointure sur la table participants ! (le message d'erreur est pourtant assez clair! )

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    bonjour,

    Excusez-moi mais je débute et le message d'erreur n'est pas tout à fait clair pour moi.

    Merci de votre compréhension.

    el bero

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par el bero
    Comment distinguer les - de 25 ans et les plus de 25 ans ?
    Qqch comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT CASE WHEN age < 25 THEN 'jeunots' ELSE 'croulants' END AS groupe_d_age, count( * ) 
    FROM inscriptions i
      INNER JOIN participants p ON i.num_participant = p.num_participant
      LEFT OUTER JOIN activites a ON IS.num_activite = a.num_activite
    WHERE a.date1 BETWEEN '2006-01-01' AND '2006-12-31'
    GROUP BY CASE WHEN age < 25 THEN 'jeunots' ELSE 'croulants' END
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci de votre intervention :

    Voici la réponse de Mysql :

    Erreur

    requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT CASE WHEN age < 25
    THEN 'jeunots'
    ELSE 'croulants'
    END AS groupe_d_age, count( * ) 
    FROM inscriptions i
    INNER JOIN participants p ON i.num_participant = p.num_participant
    LEFT OUTER JOIN activites a ON IS.num_activite = a.num_activite
    WHERE a.date1
    BETWEEN '2006-01-01' AND '2006-12-31'
    GROUP BY CASE WHEN age < 25
    THEN 'jeunots'
    ELSE 'croulants'
    END LIMIT 0 , 30
    MySQL a répondu:


    #1109 - Table inconnue 'IS' dans on clause

    Merci de votre aide précieuse.
    El bero

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Hello,

    1OOO excuses, je vu la petite faute, c'est pas is mais i dans la clause ON.

    Cela fonctionne parfaitement, voici le résultat de votre requete :

    croulants :1663
    jeunots:218

    je vous remercie pour votre aide et félicitation ! quelle compétence

    El bero

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Désolé pour la faute de frappe

    Comme tu es relativement nouveau, je précise que pour présenter ton code il faut utiliser les balises [CODE][/CODE] ou le bouton #.
    Bienvenue sur le forum !
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

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

Discussions similaires

  1. [XL-2010] Modification requête SQL dans code VBA excel
    Par jgresse1025 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/03/2015, 22h53
  2. [MySQL] modification de son compte sur mon site avec requête sql
    Par cuisto44000 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/07/2008, 17h56
  3. [Requête SQL]bloquer la modif sql automatique d'access
    Par grogui dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/03/2007, 11h52
  4. Modification d'un paramètre d'une requête SQL
    Par Anto03 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 21/12/2006, 16h01
  5. Requête modification base SQL
    Par jacma dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/11/2003, 13h49

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