Problème SQL [TRES IMPORTANT )

Résolu
Bonjour,

Demain je passe mon oral de gestion pour le bac et je dois présenté des requètes SQL...
malheuresement il y a une requète où sa me met systématiquement :

le champ spécifié [CodeService] peut désigner plusieurs
| tables listées dans la clause FROM de votre instruction SQL .

donc voici la requète

SELECT CodeService, COUNT(NumSalarié)
FROM Services, Salariés
WHERE Services.CodeService=Salariés.CodeService
GROUP BY CodeService;

merci de votre aide.
Configuration: Windows XP
Firefox 3.0.10

12 réponses

  • Votes
  • Date
  • Date décroissante
  1. merci pour vos réponses. Jodu sa marche ^^ merci beaucoup de ton aide tu me sauves la vie !!
    1. Ca marchera pas, numsalarie est clé primaire de Salariés, et pas clé étrangère de Services.
      Il faut donc aller le chercher tout de même, donc la jointure doit apparaitre.
      1. Jamais appris sa XD désolé je savait pas....

        Mais d'après ce qu'il dit il veut juste le nombre de salarié par service

        Donc si il veut juste utiliser CodeService il n'a même pas besoin de faire de jointure donc du coup:

        SELECT CodeService, COUNT(NumSalarié)
        FROM Salariés
        GROUP BY CodeService;

        devrait suffir non??
        1. Pika, la jointure par la clause Where suffit, en tous cas sur Access et Mysql
          1. Et une jointure peut être si tu fait une recherche dans deux table....

            SELECT Services.CodeService, COUNT(NumSalarié)
            FROM Services JOIN Salariés
            ON Services.CodeService=Salariés.CodeService
            WHERE Services.CodeService=Salariés.CodeService
            GROUP BY Services.CodeService

            La sa devrait marcher normalement
            1. Re,

              quel âne je fais ...
              SELECT Service.CodeService, COUNT(NumSalarié) 
              FROM Services, Salariés 
              WHERE Services.CodeService=Salariés.CodeService 
              GROUP BY Service.CodeService; 
              


              Explication : quand un champ a le même nom dans deux tables différentes, tu dois préciser en préfixant ce champ par le nom de ta table, afin que SQL ne s'embrouille pas.

              Ta requête est juste sinon.
              1. j'avais déja essayé sa ne marche toujours pas.... peut ètre que la requète est fausse je ne sais pas
                il demande le nombre de salariés regroupés par service. merci pour ton aide
                1. Salut,

                  alors essaie
                  SELECT Services.CodeService, COUNT(NumSalarié) 
                  FROM Services, Salariés 
                  WHERE Services.CodeService=Salariés.CodeService 
                  GROUP BY CodeService
                  
                  1. merci beaucoup poour ta réponse, je viens d'essayer et sa me remet pareil... je ne sait pas du tout quoi faire..
                    1. Salut,

                      le message est pourtant très clair... Ton champ est présent dans tes deux tables, SQL ne sait pas lequel prendre.
                      Il faut que tu préfixes du nom de la table le nom de ton champ.

                      SELECT Salariés.CodeService, COUNT(NumSalarié) 
                      FROM Services, Salariés 
                      WHERE Services.CodeService=Salariés.CodeService 
                      GROUP BY CodeService; 
                      


                      Ca doit marcher ;)