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

  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 ;)
    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,

        alors essaie
        SELECT Services.CodeService, COUNT(NumSalarié) 
        FROM Services, Salariés 
        WHERE Services.CodeService=Salariés.CodeService 
        GROUP BY CodeService
        
        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. 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. 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. Pika, la jointure par la clause Where suffit, en tous cas sur Access et Mysql
                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. 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. merci pour vos réponses. Jodu sa marche ^^ merci beaucoup de ton aide tu me sauves la vie !!