|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
jeroen WRInaute accro

Inscrit le: 30 Aoû 2002 Messages: 2321
|
Posté le : Jeu Nov 15, 2007 17:31 Sujet du message: 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 ! |
|
| |
|
 |
YoyoS WRInaute accro

Inscrit le: 14 Sep 2006 Messages: 2377
|
Posté le : Jeu Nov 15, 2007 17:41 Sujet du message: tri (mysql ou php) |
|
|
Dis voir ce que tu veux sélectionner, ça sera plus clair déjà !  |
|
| |
|
 |
Mertyl WRInaute discret

Inscrit le: 17 Juin 2007 Messages: 56
|
Posté le : Jeu Nov 15, 2007 18:13 Sujet du message: tri (mysql ou php) |
|
|
SELECT article, count(commentaire) as nbr
FROM articles,commentaires
WHERE articles.id = commentaires.id_articles
ORDER BY nbr DESC
ca fonctionne pas ca ? |
|
| |
|
 |
YoyoS WRInaute accro

Inscrit le: 14 Sep 2006 Messages: 2377
|
Posté le : Jeu Nov 15, 2007 18:44 Sujet du message: tri (mysql ou php) |
|
|
| 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 accro

Inscrit le: 30 Aoû 2002 Messages: 2321
|
Posté le : Jeu Nov 15, 2007 20:26 Sujet du message: tri (mysql ou php) |
|
|
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  |
|
| |
|
 |
YoyoS WRInaute accro

Inscrit le: 14 Sep 2006 Messages: 2377
|
Posté le : Jeu Nov 15, 2007 23:40 Sujet du message: tri (mysql ou php) |
|
|
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:
| Code: |
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: |
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 accro

Inscrit le: 30 Aoû 2002 Messages: 2321
|
Posté le : Ven Nov 16, 2007 0:13 Sujet du message: tri (mysql ou php) |
|
|
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
| YoyoS a écrit: |
| Code: |
| (..) 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

Inscrit le: 14 Sep 2006 Messages: 2377
|
Posté le : Ven Nov 16, 2007 0:18 Sujet du message: tri (mysql ou php) |
|
|
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 ? |
|
| |
|
 |
jeroen WRInaute accro

Inscrit le: 30 Aoû 2002 Messages: 2321
|
Posté le : Ven Nov 16, 2007 0:43 Sujet du message: tri (mysql ou php) |
|
|
| 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 mais c'est pas ce que je veux....
Je veux trier par COMMENTAIRES du plus au moins récent, MAIS EN REGROUPANT les articles
compris ?  |
|
| |
|
 |
Blaze_Heatnix WRInaute impliqué

Inscrit le: 31 Déc 2003 Messages: 322
|
Posté le : Ven Nov 16, 2007 2:31 Sujet du message: tri (mysql ou php) |
|
|
| 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: |
| 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) |
|
| |
|
 |
jeroen WRInaute accro

Inscrit le: 30 Aoû 2002 Messages: 2321
|
Posté le : Ven Nov 16, 2007 6:48 Sujet du message: tri (mysql ou php) |
|
|
ah, merci mais je tourne encors sous mysql 4, pas de requête double  |
|
| |
|
 |
Blaze_Heatnix WRInaute impliqué

Inscrit le: 31 Déc 2003 Messages: 322
|
Posté le : Ven Nov 16, 2007 19:42 Sujet du message: tri (mysql ou php) |
|
|
| 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: |
| SELECT id_article,date FROM commentaires GROUP BY id_article ORDER BY date DESC |
|
|
| |
|
 |
jeroen WRInaute accro

Inscrit le: 30 Aoû 2002 Messages: 2321
|
Posté le : Ven Nov 16, 2007 20:00 Sujet du message: tri (mysql ou php) |
|
|
| Oui, mais en fait le GROUP BY regroupe tous les articles et ne laisse plus qu'un commentaire. Donc je ne pense pas qu'un GROUP BY puisse faire l'affaire... |
|
| |
|
 |
| |
|
|