[RESOLU] COUNT & JOIN

COUNT & JOIN [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 27-02-2014 à 15:27:25    

Bonjour,
 
j'ai fait une requête SQL avec un INNER JOIN et un COUNT et cela marche.
SELECT COUNT(NUMLIC) (c'est l'id)  AS total FROM table_licences INNER JOIN table_sport ON table_licences.NUMSPORT = table_sports.NUMSPORT  WHERE NUMCLUB="111" GROUP BY table_licences.NUMSPORT  
 
Affichage
---------------------------
 26
--------------------------
156
-------------------------
etc...
 
Cela m'affiche le nombre de licencié (TABLE_LICENCES) du Club 111 regroupé par SPORT
 
 
Je voudrait aller chercher le nom du sport qui se trouve dans la table_sports (NOMSPORT) et créer un affichage
-----------------------------
26       +    Tennis
------------------------------
156     +    Rugby
-----------------------------
etc......
 
Donc j'ai trois tables
TABLE_LICENCES avec trois rubriques NUMLIC - NUMCLUB - NUMSPORT
TABLE_SPORTS avec deux rubriques NUMSPORT - NOMSPORT
TABLE_CLUB avec NUMCLUB -  
 
 
j'ai bien essayé
SELECT table_licences.NUMLIC,table_licences.NUMSPORT,table_licences.NUMCLUB FROM table_licences WHERE table_licences.NUMCLUB='111'
INNER JOIN table_clubs ON  table_licences.NUMCLUB = table_club.NUMCLUB
INNER JOIN table_clubs ON  table_licences.NUMCLUB = table_club.NUMCLUB
GROUP BY table_licences.NUMSPORT
 
Mais là j'avoue que je cale...
Merci de m'éclairer


Message édité par hogz le 27-02-2014 à 19:34:20
Reply

Marsh Posté le 27-02-2014 à 15:27:25   

Reply

Marsh Posté le 27-02-2014 à 16:00:40    

Le where doit etre apres les jointures

Code :
  1. SELECT ...
  2. FROM table1 INNER JOIN table2...
  3. WHERE ...
  4. GROUP BY ...


---------------

Reply

Marsh Posté le 27-02-2014 à 17:05:35    

Ok...c'est bien ça.
Merci pour ton aide.

Reply

Marsh Posté le 03-03-2014 à 09:20:27    

C'est sympa internet quand même: :bounce:  
tu as un exo , tu ne veux pas te casser la tête à le faire ...  
tu postes l'énoncé de celui ci et hop tu trouves des gens "sympa" qui te le font à ta place ... trop fort!
Je veux bien que nous n'ayons pas tous le même niveau en SQL... mais il ne faut pas abuser!  
Il y a des "trucs" que l'on peut faire seul ou alors vite changer d'orientation, de metier, quand on post des questions sur les bases même d'une requête sql...
on va bientôt avoir des posts : je ne sais pas faire un select ... merci de m'aider...
 
@flo850 : tu es trop sympa :)...
@hogz: tu cales vite, je pense...et surtout il faut écouter en cours, ou juste les relire,  chercher un peu sur internet...  
Car l'écritrure d'un join en SQL, tu dois juste l'avoir des millions de fois sur les forums...  
Ne serait ce qu'ici, il y a plein de posts...  
 
 
En plus d'être mal écrite (tu débutes, soit...), elle est mal construite ou mal copié collé...
"SELECT table_licences.NUMLIC,table_licences.NUMSPORT,table_licences.NUMCLUB  
FROM table_licences WHERE table_licences.NUMCLUB='111'  
INNER JOIN table_clubs ON  table_licences.NUMCLUB = table_club.NUMCLUB  
INNER JOIN table_clubs ON  table_licences.NUMCLUB = table_club.NUMCLUB
GROUP BY table_licences.NUMSPORT "
 
En reprenant les instructions de flo850(il existe aussi une 2nde façon d'écrire un inner join sql :"select * from table1 , table2 where table1.clé = table2.clé and condition(s) ...." ),
tu vas arriver à avoir la bonne syntaxe... mais après quoi, tu vas avoir des soucis encore...
 
Tu fais 2 inner join sur une même table avec les mêmes jointures :
cela ne sert vraiement à rien, un suffit ;)
cela ne doit même pas passer à l'éxécution car tu n'a pas qualifié les 2 tables différament et donc tu vas avoir des noms en double de table et de champs...:)
 
En plus, cela ne te remontra pas ce que tu cherches...(pourquoi faire un join sur la table table_club ? juste pour faire une requete qui ne sert à rien?
Tu n'as pas l'info dont tu as besoin dans cette table...
Tu as l'info sur la table, table_sport... donc fais le join sur celle-ci, directement...
Pour finir, tu fais un group by alors que tu ne fais aucune instruction necessitant à un groupage (count,sum, min, max ...) donc ça marchera vraiement pas !
 
 
Guillaume
 
NB.: dans ton requeteur sql, tu dois avoir aussi des messages de non exécution... et donc lire ceux et faire les corrections en conséquence...


Message édité par gpl73 le 03-03-2014 à 09:45:58
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed