Count et jointure - SQL/NoSQL - Programmation
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";
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 |
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.
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
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. |
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.
@cerafin --> Tu pourrais peut etre nous donner l'erreur.
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
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