Problème SQL [TRES IMPORTANT )

Résolu
sheva57 -  
 sheva57 -
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. Jodu Messages postés 91 Statut Membre 14
     
    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 ;)
    0
  2. sheva57
     
    merci beaucoup poour ta réponse, je viens d'essayer et sa me remet pareil... je ne sait pas du tout quoi faire..
    0
  3. Jodu Messages postés 91 Statut Membre 14
     
    Salut,

    alors essaie
    SELECT Services.CodeService, COUNT(NumSalarié) 
    FROM Services, Salariés 
    WHERE Services.CodeService=Salariés.CodeService 
    GROUP BY CodeService
    
    0
  4. sheva57
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Jodu Messages postés 91 Statut Membre 14
     
    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.
    0
  7. xXPika74Xx Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   13
     
    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
    0
  8. Jodu Messages postés 91 Statut Membre 14
     
    Pika, la jointure par la clause Where suffit, en tous cas sur Access et Mysql
    0
  9. xXPika74Xx Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   13
     
    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??
    0
  10. Jodu Messages postés 91 Statut Membre 14
     
    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.
    0
  11. sheva57
     
    merci pour vos réponses. Jodu sa marche ^^ merci beaucoup de ton aide tu me sauves la vie !!
    0
  12. Jodu Messages postés 91 Statut Membre 14
     
    De rien !

    mets en résolu, et bonne chance pour ton oral
    0