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

Développement SQL Server Discussion :

Requete SQL : J'ai du mal avec GroupBy


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    février 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : février 2011
    Messages : 20
    Points : 23
    Points
    23
    Par défaut Requete SQL : J'ai du mal avec GroupBy
    Bonjour,

    Pour ceux qui ne sont pas en vacances !, je viens une nouvelle fois soliciter votre aide.
    J'ai vraiment un souci avec les clauses group by & Co.

    J'ai une table LOCALITE avec trois champs IDLocalite, Localite_Ville et Localite_CP.
    Une table INTERVENTION avec deux champs (pour faire simple) IDIntervention et IdLocalite.

    Des données dans les deux tables.

    Voici le script de creation des tables et données (pour vous simplifier)

    CREATE TABLE [Localite](
    [IDLocalite] [varchar](10) NOT NULL,
    [Localite_Ville] [varchar](30) NOT NULL,
    [Localite_CP] [varchar](30) NOT NULL
    )

    CREATE TABLE [Intervention](
    [IDIntervention] [varchar](10) NOT NULL,
    [IDLocalite] [varchar](30) NOT NULL,
    )

    INSERT INTO LOCALITE (IDLocalite,Localite_Ville,Localite_CP) VALUES ('1','PARIS','75000')
    INSERT INTO LOCALITE (IDLocalite,Localite_Ville,Localite_CP) VALUES ('2','PARIS','75001')
    INSERT INTO LOCALITE (IDLocalite,Localite_Ville,Localite_CP) VALUES ('3','NANTES','44000')
    INSERT INTO LOCALITE (IDLocalite,Localite_Ville,Localite_CP) VALUES ('4','NANTES','44005')

    INSERT INTO INTERVENTION (IDIntervention,IDLocalite) VALUES ('1','1')
    INSERT INTO INTERVENTION (IDIntervention,IDLocalite) VALUES ('2','1')
    INSERT INTO INTERVENTION (IDIntervention,IDLocalite) VALUES ('3','2')
    INSERT INTO INTERVENTION (IDIntervention,IDLocalite) VALUES ('4','4')

    Je souhaite connaitre le nombre d'intervention par LOCALITE_VILLE sachant qu'il y a eu 2 interventions à Paris (ID1), 1 intervention à Paris (ID2) et 1 à Nantes (ID4).

    La Requete

    SELECT
    Localite_Ville,
    (SELECT Count(*) FROM Intervention
    WHERE Localite.IDLocalite = Intervention.IDLocalite) AS Valeur
    FROM Localite

    Retourne
    PARIS 2
    PARIS 1
    NANTES 0
    NANTES 1

    Alors que je souhaiterai
    PARIS 3
    NANTES 1

    J'ai essayé de placer groupby, par ci par la, mais ca ne convient pas à cause du idlocalite ... j'ai lu des docs sur group by mais je bloque !!

    Voila, si vous savez aider moi.

    Vous remerciant,

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : mars 2005
    Messages : 1 683
    Points : 2 575
    Points
    2 575
    Par défaut
    Bonjour,

    http://sqlpro.developpez.com/cours/sqlaz/ensembles/

    exemple 1 et 1 bis.

    N'essayez pas en aveugle de le mettre ici ou là, essayez de comprendre comment la clause fonctionne.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    février 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : février 2011
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par vmolines Voir le message
    Bonjour,

    http://sqlpro.developpez.com/cours/sqlaz/ensembles/

    exemple 1 et 1 bis.

    N'essayez pas en aveugle de le mettre ici ou là, essayez de comprendre comment la clause fonctionne.
    Merci pour votre réponse et le lien,
    J'ai deja parcouru cet exemple mais il me semble que ca differe de mon pb car j'inclus un select count(*) d'une autre table qui fait que la clause group by ne peut etre appliquée seulement sur localite_ville.
    Je me trompe ?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : mars 2005
    Messages : 1 683
    Points : 2 575
    Points
    2 575
    Par défaut
    Vous maîtrisez les jointures ? Si non, il faut en commencer par là.

    Votre requête ne nécessite pas de sous requête comme vous l'avez fait. Une jointure, un count et un group by suffisent.

    Procédez en deux temps

    1er temps :

    Ecrivez une requête qui affiche toutes les interventions avec le libellé de la ville dans laquelle elles se déroulent (pas de comptage dans cette requête). Résultat attendu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IDIntervention	Localite_Ville
    1 		paris
    2 		paris
    3 		nantes
    4 		nantes

    2eme temps

    Ecrivez une requête qui affiche le nombre d'intervention par Localite_Ville en vous servant du cours sur les regroupements.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    février 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : février 2011
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par vmolines Voir le message
    Vous maîtrisez les jointures ? Si non, il faut en commencer par là.

    Votre requête ne nécessite pas de sous requête comme vous l'avez fait. Une jointure, un count et un group by suffisent.

    Procédez en deux temps

    1er temps :

    Ecrivez une requête qui affiche toutes les interventions avec le libellé de la ville dans laquelle elles se déroulent (pas de comptage dans cette requête). Résultat attendu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IDIntervention	Localite_Ville
    1 		paris
    2 		paris
    3 		nantes
    4 		nantes

    2eme temps

    Ecrivez une requête qui affiche le nombre d'intervention par Localite_Ville en vous servant du cours sur les regroupements.

    ..... autant pour moi, je suis passé completement a cote.
    Pourquoi faire simple quand on peut faire compliqué ...

    Encore merci pour votre aide

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/04/2009, 03h12
  2. Remplacer une partie de chaine par une variable
    Par JPaul94300 dans le forum VBA Access
    Réponses: 6
    Dernier message: 04/02/2009, 18h52
  3. probleme sql - j'ai du mal avec les dates
    Par zetton dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/06/2008, 19h23
  4. Plantage requete SQL simple sous Delphi7/ADO avec Access
    Par tomy29 dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/08/2005, 12h09
  5. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 15h45

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