A voir également:
- Aide mysql sur une requete left outer join
- Mysql community server - Télécharger - Bases de données
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
- Cents = gettens(left(mid(mynumber, decimalplace + 1) & _ "00", 2)) ✓ - Forum Excel
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
3 réponses
Utilisateur anonyme
1 mars 2011 à 16:02
1 mars 2011 à 16:02
Bonjour,
SELECT
c.id_user AS lastcomuser,
max(c.date_commentaire) AS lastcomdate,
COUNT(c.id_commentaire) AS nbcommentaires
FROM
discussions d
LEFT OUTER JOIN 'commentaires' c ON d.id_sujet=c.id_sujet
GROUP BY d.id_sujet
ORDER BY d.date_discussion DESC
Devrait fonctionner
SELECT
c.id_user AS lastcomuser,
max(c.date_commentaire) AS lastcomdate,
COUNT(c.id_commentaire) AS nbcommentaires
FROM
discussions d
LEFT OUTER JOIN 'commentaires' c ON d.id_sujet=c.id_sujet
GROUP BY d.id_sujet
ORDER BY d.date_discussion DESC
Devrait fonctionner
Utilisateur anonyme
2 mars 2011 à 13:19
2 mars 2011 à 13:19
Bonjour,
Quel id_user voulez vous afficher ?
Le dernier user ayant posté un commentaire ?
Quel id_user voulez vous afficher ?
Le dernier user ayant posté un commentaire ?
Utilisateur anonyme
3 mars 2011 à 09:52
3 mars 2011 à 09:52
Bon,
En SQL ce genre d'opération est très difficile, du moins ce que j'en connais.
Pour une discussion donnée je sais le faire, considérez ID comme étant l'id_sujet d'un sujet dans la table discussion :
SELECT
d.*, c.id_user AS lastcomuser,
max(c.date_commentaire) AS lastcomdate,
COUNT(c.id_commentaire) AS nbcommentaires
FROM
discussions d
LEFT OUTER JOIN 'commentaires' c ON d.id_sujet=c.id_sujet and d.id_sujet=ID
where
c.id_user = (
SELECT
max(id_user)
FROM
commentaires
WHERE
id_sujet=ID
)
GROUP BY d.id_sujet, c.id_user
Mais il va falloir tout d'abord récupérer tous les id_sujet de discussion et faire une boucle dessus, bof bof.
Donc je ferais ça en deux temps
select * from discussion order by date_discussion desc
boucle sur le tableau resultant, disons $tab
puis pour chaque ligne
select
max(id_user) AS lastcomuser,
max(date_commentaire) AS lastcomdate,
COUNT(id_commentaire) AS nbcommentaires
from commentaires
where
id_sujet=ID_SUJET
et ajouter ce tableau résultat à la ligne de $tab correspondant à l'ID_SUJET traité
Il y a peut-être mieux, mais je ne sais pas faire... désolé.
En SQL ce genre d'opération est très difficile, du moins ce que j'en connais.
Pour une discussion donnée je sais le faire, considérez ID comme étant l'id_sujet d'un sujet dans la table discussion :
SELECT
d.*, c.id_user AS lastcomuser,
max(c.date_commentaire) AS lastcomdate,
COUNT(c.id_commentaire) AS nbcommentaires
FROM
discussions d
LEFT OUTER JOIN 'commentaires' c ON d.id_sujet=c.id_sujet and d.id_sujet=ID
where
c.id_user = (
SELECT
max(id_user)
FROM
commentaires
WHERE
id_sujet=ID
)
GROUP BY d.id_sujet, c.id_user
Mais il va falloir tout d'abord récupérer tous les id_sujet de discussion et faire une boucle dessus, bof bof.
Donc je ferais ça en deux temps
select * from discussion order by date_discussion desc
boucle sur le tableau resultant, disons $tab
puis pour chaque ligne
select
max(id_user) AS lastcomuser,
max(date_commentaire) AS lastcomdate,
COUNT(id_commentaire) AS nbcommentaires
from commentaires
where
id_sujet=ID_SUJET
et ajouter ce tableau résultat à la ligne de $tab correspondant à l'ID_SUJET traité
Il y a peut-être mieux, mais je ne sais pas faire... désolé.
Effectivement, l'insertion d'une requete supplémentaire dans la boucle est la solution de recours que j'ai mis en place temporairement.
Bon ca fonctionne pas trop mal, si ce n'est juste la frustration de ne pas pouvoir faire qu'une seule requete.
L'environnement de production ne concernant qu'une centaine d'utilisateur, je n'aurais certainement pas de problèmes de lourdeur...
Merci quand meme beaucoup
Bon ca fonctionne pas trop mal, si ce n'est juste la frustration de ne pas pouvoir faire qu'une seule requete.
L'environnement de production ne concernant qu'une centaine d'utilisateur, je n'aurais certainement pas de problèmes de lourdeur...
Merci quand meme beaucoup
1 mars 2011 à 17:24
merci quand même