tri (mysql ou php)
13 messages
• Page 1 sur 1
- jeroen
- WRInaute passionné

- Messages: 2455
- Inscription: 30 Aoû 2002
tri (mysql ou php)
Salut, j'ai un problème de tri, et j'aurai voulu résoudre ça via mysql, ou a défaut sous php après.
J'ai deux tables :
articles a (id, article)
commentaires c (id, id_article, commentaire, date)
La jointure est celle-ci : c.id_article=a.id
Je voudrais trier par ordre de commentaires décroissants regroupés par article.
Si c'est pas possible, existe t'il une fonction sous php qui permette de faire ça directement, ou est ce qu'il faut la créer ?
Merci !
J'ai deux tables :
articles a (id, article)
commentaires c (id, id_article, commentaire, date)
La jointure est celle-ci : c.id_article=a.id
Je voudrais trier par ordre de commentaires décroissants regroupés par article.
Si c'est pas possible, existe t'il une fonction sous php qui permette de faire ça directement, ou est ce qu'il faut la créer ?
Merci !
-

YoyoS - WRInaute accro

- Messages: 3827
- Inscription: 14 Sep 2006
Mertyl a écrit:SELECT article, count(commentaire) as nbr
FROM articles,commentaires
WHERE articles.id = commentaires.id_articles
ORDER BY nbr DESC
ca fonctionne pas ca ?
Il faudra surement faire un truc du genre , mais il ne nous dit pas s'il veut trier les commentaires séparément ou par nombre de commentaire pour chaque article.
Ca manque d'info ou alors je comprends pas ce qu'il demande.
- jeroen
- WRInaute passionné

- Messages: 2455
- Inscription: 30 Aoû 2002
Merci pour l'ébauche.
Le code proposé sélectionne le nombre de commentaires associés à chaque article, et trie le résultat par nombre décroissant. Ce n'st pas ce que je veux faire
Je veux sélectionner tous les commentaires (c.id), groupés par articles (a.id), et triés par date de dernier commentaire
ex : liste d'articles et date des commentaire associés
article - date commentaires associés
1 - 17h30 19h00 21h00
2 - 18h20 19h30 20h00
3 - 14h00 22h00
ici je voudrais récupérer ça
article - date commentaire associé
3 - 22h00
3 - 14h00
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
Merci pour vos
Le code proposé sélectionne le nombre de commentaires associés à chaque article, et trie le résultat par nombre décroissant. Ce n'st pas ce que je veux faire
Je veux sélectionner tous les commentaires (c.id), groupés par articles (a.id), et triés par date de dernier commentaire
ex : liste d'articles et date des commentaire associés
article - date commentaires associés
1 - 17h30 19h00 21h00
2 - 18h20 19h30 20h00
3 - 14h00 22h00
ici je voudrais récupérer ça
article - date commentaire associé
3 - 22h00
3 - 14h00
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
Merci pour vos
-

YoyoS - WRInaute accro

- Messages: 3827
- Inscription: 14 Sep 2006
pour afficher :
article - date commentaire associé
3 - 22h00
3 - 14h00
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
j'utiliserais quelque chose comme ça:
Si tu comptes mettre en même temps le commentaire en lui même, bah tu rajoutes le champ commentaire dans ton select.
article - date commentaire associé - commentaire
3 - 22h00 - blabla1
3 - 14h00 - ...
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
Ce qui donne:
NB: Tu n'as pas besoin d'utiliser la table "article" pour faire ça !
Si maintenant, tu as encore envie d'afficher en plus, l'article en lui même. Ca va te faire une requête bien balaise en ressources ! :p Mais bon, ce n'est pas ce que tu veux vu comme tu viens de l'expliquer, vu que tu veux juste afficher ça tu as dis:
article - date commentaire associé
3 - 22h00
3 - 14h00
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
Si ce n'est pas le cas, ben va falloir être un poil plus clair.
article - date commentaire associé
3 - 22h00
3 - 14h00
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
j'utiliserais quelque chose comme ça:
- Code: Tout sélectionner
SELECT id_article, date
FROM commentaires
ORDER BY id_article DESC,date DESC;
Si tu comptes mettre en même temps le commentaire en lui même, bah tu rajoutes le champ commentaire dans ton select.
article - date commentaire associé - commentaire
3 - 22h00 - blabla1
3 - 14h00 - ...
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
Ce qui donne:
- Code: Tout sélectionner
SELECT id_article, date, commentaire
FROM commentaires
ORDER BY id_article DESC,date DESC;
NB: Tu n'as pas besoin d'utiliser la table "article" pour faire ça !
Si maintenant, tu as encore envie d'afficher en plus, l'article en lui même. Ca va te faire une requête bien balaise en ressources ! :p Mais bon, ce n'est pas ce que tu veux vu comme tu viens de l'expliquer, vu que tu veux juste afficher ça tu as dis:
article - date commentaire associé
3 - 22h00
3 - 14h00
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
Si ce n'est pas le cas, ben va falloir être un poil plus clair.
- jeroen
- WRInaute passionné

- Messages: 2455
- Inscription: 30 Aoû 2002
Merci. Je suis bine d'accord avec toi, je n'ai pas besoin de la table article dans la requête, et au pire je ferais une jointure
Tu propose ça
Mais ça trie par id_article, puis par date : ça va donner ça :
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
3 - 22h00
3 - 14h00
alors que je voudrais afficher en premier l'article dont le dernier commentaire est le plus récent
Tu propose ça
YoyoS a écrit:
- Code: Tout sélectionner
(..) ORDER BY id_article DESC,date DESC;
Mais ça trie par id_article, puis par date : ça va donner ça :
1 - 21h00
1 - 19h00
1 - 17h30
2 - 20h00
2 - 19h30
2 - 18h20
3 - 22h00
3 - 14h00
alors que je voudrais afficher en premier l'article dont le dernier commentaire est le plus récent
-

YoyoS - WRInaute accro

- Messages: 3827
- Inscription: 14 Sep 2006
ORDER BY id_article DESC,date DESC;
Non ca va te classer en priorité tous les articles en décroissant. Et pour chaque article identique, te mettre la date en décroissant. Merci de tester !
En oracle ça marche en tout cas, t'es sure que ça marche pas sous mysql ?
Non ca va te classer en priorité tous les articles en décroissant. Et pour chaque article identique, te mettre la date en décroissant. Merci de tester !
En oracle ça marche en tout cas, t'es sure que ça marche pas sous mysql ?
- jeroen
- WRInaute passionné

- Messages: 2455
- Inscription: 30 Aoû 2002
YoyoS a écrit:ORDER BY id_article DESC,date DESC;
Non ca va te classer en priorité tous les articles en décroissant. Et pour chaque article identique, te mettre la date en décroissant. Merci de tester !
on est bien d'accord, et c'est EXACTEMENT ce que je disais plus haut
Je veux trier par COMMENTAIRES du plus au moins récent, MAIS EN REGROUPANT les articles
compris ?
- Blaze_Heatnix
- WRInaute occasionnel

- Messages: 321
- Inscription: 31 Déc 2003
jeroen a écrit:Je veux trier par COMMENTAIRES du plus au moins récent, MAIS EN REGROUPANT les articles
Et comme ça, est-ce mieux ?
- Code: Tout sélectionner
SELECT t.id_article,t.date FROM (SELECT id_article,date FROM commentaires ORDER BY date DESC) t GROUP BY t.id_article ORDER BY t.date DESC
(A noter que c'est beaucoup plus précis qu'un simple : "SELECT id_article,date FROM commentaires GROUP BY id_article ORDER BY date DESC" dans le cas où "date" est sous la forme aaaa-mm-jj)
- Blaze_Heatnix
- WRInaute occasionnel

- Messages: 321
- Inscription: 31 Déc 2003
jeroen a écrit:ah, merci mais je tourne encors sous mysql 4, pas de requête double
Bah moi aussi pourtant... Tu as quand même essayé ?
Et celle-là ?
- Code: Tout sélectionner
SELECT id_article,date FROM commentaires GROUP BY id_article ORDER BY date DESC
13 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- [PHP/MySQL] Problème dans le tri
- [MYSQL] Tri par date
- Optimisation d'un tri Mysql
- Tri sur champ Date Mysql
- Mysql 5 : Tri sur nombres négatifs
- option de tri dans une requête mysql
- Requête mysql : Tri complexe des commentaires par votes
- MySQL - Tri d'une table par occurences d'une valeur
- [PHP-MySQL] : argument is not a valid MySQL ressource
- [PHP/MySQL] Excepter une valeur dans un requête SQL en PHP
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
- Le moteur de recherche de vidéos d'orange.fr - 23-03-2010
- Sortie officielle de GoogleStats v2.0 ! - 23-02-2003
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Le WRInaute du moment - 24-10-2006
Qui est en ligne
Utilisateurs parcourant ce forum: ericstamant et 0 invités

