Count et jointure

Count et jointure - SQL/NoSQL - Programmation

Marsh Posté le 29-03-2007 à 09:46:33    

Bonjour a tous,
 
Je souhaite faire un count dans un requête comportant une jointure.
 
La requête qui fonctionne :
 
$select = "SELECT log.date,nbr_msg,groupnom FROM log,Group_info WHERE  log.nbr_msg=1011 AND Group_info.groupnom='$groupe' AND log.date BETWEEN $date AND $date1 ORDER BY date";
 
Je voudrait juste essayer de faire un count d'un des éléments de la table log alors j'ai essayé ca :
 
$select = "SELECT log.date,nbr_msg,groupnom,COUNT(log.date) AS nbr FROM log,Group_info WHERE  log.nbr_msg=1011 AND Group_info.groupnom='$groupe' AND log.date BETWEEN $date AND $date1 ORDER BY date";
 
Mais ca ne fonctionne pas je pense que c'est un problème de syntax mais je ne trouve pas la solution
 
Merci d'avance

Reply

Marsh Posté le 29-03-2007 à 09:46:33   

Reply

Marsh Posté le 29-03-2007 à 10:02:54    


$select = "SELECT log.date,nbr_msg,groupnom,COUNT(*) AS nbr FROM log,Group_info WHERE  log.nbr_msg=1011 AND Group_info.groupnom='$groupe' AND log.date BETWEEN $date AND $date1
GROUP BY log.date,nbr_msg,groupnom ORDER BY date";


---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
Reply

Marsh Posté le 29-03-2007 à 10:07:52    

Je vais essayer ca et je te tient au courant

Reply

Marsh Posté le 29-03-2007 à 10:09:15    

Ca marche pas ca m'affiche toujours la meme erreure.

Reply

Marsh Posté le 29-03-2007 à 10:32:17    

bpoujol a écrit :

$select = "SELECT log.date,nbr_msg,groupnom,COUNT(*) AS nbr FROM log,Group_info WHERE  log.nbr_msg=1011 AND Group_info.groupnom='$groupe' AND log.date BETWEEN $date AND $date1
GROUP BY log.date,nbr_msg,groupnom ORDER BY date";

 

Loin de moi l'idée de relancer une vieille polémique (qui n'a pas de raison d'être ici) mais ton Count(*) ne va absolument rien solutionner et en plus ce n'est pas élégant.  :p

 

Maintenant pour le problème initial : c'est complètement illogique de demander à la fois un Count et à la fois une sélection de champs. Un count ne te retourne toujours que UNE ligne (à savoir le compte des rangs demandés) alors que log.date, nbr_msg etc. peuvent t'en retourner plusieurs. Ce n'est pas la restriction que tu mets dans le where (imaginons que tu n'aies effectivement qu'une ligne retournée) qui va changer cet état de fait --> problème de syntaxe car pas autorisé.

 

En bref, si tu veux compter le nombre de lignes dans ta table de log tu vas devoir te faire une requête séparée ... il doit peut-être y avoir moyen de contourner cela avec un group by mais j'ai pas le cerveau en mode conception ce matin, sorry  :ange:

Message cité 1 fois
Message édité par ZeBix le 29-03-2007 à 10:32:58
Reply

Marsh Posté le 29-03-2007 à 11:38:46    

ZeBix a écrit :

Loin de moi l'idée de relancer une vieille polémique (qui n'a pas de raison d'être ici) mais ton Count(*) ne va absolument rien solutionner et en plus ce n'est pas élégant.  :p  
 
Maintenant pour le problème initial : c'est complètement illogique de demander à la fois un Count et à la fois une sélection de champs. Un count ne te retourne toujours que UNE ligne (à savoir le compte des rangs demandés) alors que log.date, nbr_msg etc. peuvent t'en retourner plusieurs. Ce n'est pas la restriction que tu mets dans le where (imaginons que tu n'aies effectivement qu'une ligne retournée) qui va changer cet état de fait --> problème de syntaxe car pas autorisé.
 
En bref, si tu veux compter le nombre de lignes dans ta table de log tu vas devoir te faire une requête séparée ... il doit peut-être y avoir moyen de contourner cela avec un group by mais j'ai pas le cerveau en mode conception ce matin, sorry  :ange:


 
Mon post avait pour but de montrer la présence du GROUP BY concernant les count(*) oui oui je sais c'est sale mais n'ayant pas mon image oracle "sur moi" je n'ai pas pu testé et au cas ça aurait été une simple erreur de frappe. :ange:  
 
@cerafin --> Tu pourrais peut etre nous donner l'erreur.


---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
Reply

Marsh Posté le 30-03-2007 à 16:01:14    

Finalement j'ai fait un requête a part pour solutionner le problème
 
Merci à vous pour votre aide ;)
 

Reply

Sujets relatifs:

Leave a Replay

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