begin process at 2012 05 31 14:43:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Requête avec jonction ou pas


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Requête avec jonction ou pas

dimanche 6 juillet 2008 à 15:05:49 | Requête avec jonction ou pas

gihefca

Salut :)

J'ai un problème avec une jonction
Voilà, j'ai 2 tables, une table news (id, news, date et valide) et une table commentaire (id, idnews, commentaire)
Je souhaite afficher les news avec le nombre de commentaires par news (0 s'il n'y en a pas)

En gros, la requête donne :
select n.id, n.news, n.date, n.valide, count(c.id)
from news n, commentaire c
where (n.id=c.idnews or n.id<>c.idnews) and n.valide=1
group by n.id order by n.date

Le problème, c'est que le count(c.id) affiche le nombre total de commentaire, mais pas le nombre de commentaire par news

C'est surement faisable, mais je vois pas comment
Et comme on dit, il vaut mieux 1 qui sait que 10 qui cherchent

lundi 7 juillet 2008 à 17:05:43 | Re : Requête avec jonction ou pas

neigedhiver

Salut,

Ta clause where me semble bizarre :
where (n.id=c.idnews or n.id<>c.idnews)
Là, tu cherches toutes les news, quel que soit leur id...
Peut-être que :
where n.id=c.idnews
seulement, ce serait mieux... Non ? Ca, c'est une jointure gauche implicite.
Sauf que... Effectivement, MySQL ne sera pas capable de ne compter que les commentaire pour chaque news, s'il doit toutes les récupérer.

Il faudra alors faire une requête par news, pour compter le nombre de commentaires.

Une autre méthode consiste à stocker dans un champ de chaque news le nombre de commentaires qu'elle a reçus.
Il faut mettre à jour ce champ à chaque fois qu'un commentaire est posté, et à chaque fois qu'un commentaire est supprimé.
Si tu contrôles parfaitement ce compteur, il sera toujours juste et tu le récupèreras dans la requête avec l'id de la news, son contenu, etc, et ce, sans frais supplémentaire (performances).
Tu peux aussi le recalculer de temps en temps pour chaque news, pour t'assurer qu'il est correct (en faisant une requête de type SELECT COUNT pour chaque news, et en modifiant sa valeur si besoin).

D'un point de vue purement théorique, cette approche n'est pas très conforme ; mais du point de vue du développeur, elle est très économe en traitements (et largement utilisée : c'est une sorte de mise en cache).


Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
lundi 7 juillet 2008 à 20:13:56 | Re : Requête avec jonction ou pas

gihefca

Faire 2 requêtes, une avec toutes les news et l'autre avec le nombre total de commentaire pour chaques news, c'est la première idée que j'ai eu
Je me demandais juste si ce n'était pas faisable en une seule requête

Le problème du champs total dans la table news, c'est qu'à chaque opération sur la table commentaire, il va falloir 2 requêtes, une pour l'insert/delete du commentaire et une pour la mise à jour du champs total dans la table news
mercredi 9 juillet 2008 à 10:18:20 | Re : Requête avec jonction ou pas

neigedhiver

Le problème, sinon, c'est que tu vas avoir une requête pour récupérer les news, et une requête par news pour compter le nombre de commentaires...
Je te laisse réfléchir à la situation qui se produit le plus souvent :
- afficher la liste des news avec le nombre de commentaires sur chaque (n+1 requêtes)
- insérer un commentaire (2 requêtes)

Pour moi, y'a pas photo...


Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...


Cette discussion est classée dans : requête, id, valide, news, commentaire


Répondre à ce message

Sujets en rapport avec ce message

requête count [ par Tomcube ] Salut !J'ai une table news avec mes news, une table commentaires où sont stockés les commentaires de ces news. Dans ma page de news (qui en affiche 30 Problème avec 'id pour mes commentaires [ par Danzeel ] Voila j'essaye de créer un système de news avec commentaires mais j'ai quelques soucis avec mon id. En effet mysql me rapporte cette erreur Column 'id requet SQL et timestamp php [ par rapbizz ] Bonjour a tous , voila j'expose mon problemej'ai creer un systeme de newset j ai fé une partie admin qui me permet de voir les commentaire , creer les Requête tri tableau 2 dimensions [ par bruno9173 ] Bonjour,Je me tourne à nouveau vers la communauté, pour lui demander comment écrire une requête sql qui serait chargée de trier un tableau 2 dimension Requete NOT IN [ par enibib ] Bonjour je n'arrive pas à faire une requête SQL c'est pourquoi je vous sollicite ... J'ai deux tables : tab1 : - id - valide tab2 : - id - statut Problème affichage conditionnel d'une requête sql [ par xxiv ] Bonjour à tous,Je vous expose ce qui devrais se passer.Les personnes inscrites peuvent choisir que leur nom et prénom apparaissent ou non.Mais si ils Gestion des événements [ par rdmoshpit ] Bonjour tout le monde, Je suis en galère... je vous explique : Je suis en train de coder un module accessible sur login, où, suivant les droits de la prb pagination pages commentaires [ par dtbfefe ] Bonjour à tous ,J'ai une page commentaire assez complète pour ce dont j'ai besoin et mon dernier ajout concerne la pagination des commentaires limiter Optimiser une requête [ par pcgpegase ] Bonjour à tous,Voilà, j'ai un problème avec une requête. J'ai 2 tables dans ma base de données : clients et facturesJe voudrais afficher sous forme de Pb requête dans PHP [ par Ma2004 ] Bonjour à tous,J'ai un petit souci avec une de mes requêtes et plus précisément la requête suivante:$requete=mysql_query("SELECT * FROM $gauche,$droit


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales