GROUP BY conditionnel..

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : GROUP BY conditionnel..

par watzakamikaze » 14 mai 2006, 18:48

Oki, merci beaucoup !!

par Cyrano » 14 mai 2006, 18:41

Pas tout à fait : c'est ce qu'on appelle une requête externe en ce sens que dans la requête, la table utilisée dans la clause JOIN est en quelque sorte externe et ça va ramener tous les résultats y compris les lignes où les autres tables (qu'on pourrait dire "interne" en quelque sorte) n'ont pas de correspondance dans la table "externe".

par watzakamikaze » 14 mai 2006, 18:36

Je te remerçie, ça marche à la perfection

Mais que signifie OUTER ? Que la requette est prise en compte en table "extérieur" ?

par Cyrano » 14 mai 2006, 16:16

Fais le GROUP BY sur p.id_post plutôt que sur co.id_post

par watzakamikaze » 14 mai 2006, 13:58

Salut, j'ai tenté avec ta requette, mais elle enlève toujours les éléments de ma table post pourlesquels group by est nul... :(

arf, ça m'énerve ce problême ! :s

par Cyrano » 14 mai 2006, 12:03

Salut, oui, tu peux en faisant une jointure externe. Proposition non testée de modification:
<?php
//...
$sql = "SELECT COUNT(co.id_post) as nb_commentaire, 
               nom_categorie, 
               p.id_post, 
               titre, 
               p.contenu, 
               DATE_FORMAT(p.date,'%e/%c/%Y <center>%l h %i</center>') as date2, 
               nom_admin 
        FROM admin as a, categorie as c, post as p
        	RIGHT OUTER JOIN commentaire as co 
        		ON p.id_post = co.id_post
        WHERE id_admin = id_posteur 
        AND c.id_categorie = p.id_categorie 
        GROUP BY co.id_post 
        ORDER BY p.id_post DESC 
        LIMIT ". $location .",". $nb_afficher .";";
//...
?>

GROUP BY conditionnel..

par watzakamikaze » 14 mai 2006, 11:21

Salut.

Enfait, j'ai un problême au niveau d'une requette mysql. J'ai des "commentaires" rattachés à un article. Or, j'aimerais afficher le nombre de commentaire allant avec un article. Ainsi, j'ai construit la requette suivante :

Code :
'SELECT COUNT(co.id_post) as nb_commentaire, nom_categorie,p.id_post,titre,p.contenu,DATE_FORMAT(p.date,'%e/%c/%Y <center>%l h %i</center>') as date2,nom_admin
FROM post as p, admin as a, categorie as c,commentaire as co WHERE id_admin=id_posteur and c.id_categorie=p.id_categorie
and co.id_post=p.id_post GROUP BY co.id_post ORDER BY id_post DESC LIMIT $location,$nb_afficher"

La requette marche.. Mais uniquement avec ceux où le COUNT(co.id_post) est supérieur à 0(c'est à dire où le group by à quelque chose à regrouper...). Donc, je me demandais si il y avait un moyen de faire un group by qui prenne aussi ceux qui n'ont pas un count nul...

Merci d'avance !!