Afficher mes sujets dans l'ordre comme celui du forum de hfr - SQL/NoSQL - Programmation
Marsh Posté le 06-03-2003 à 15:14:02
ben tu mets un distinct sur le numsujet et pi ça roule nom???
Marsh Posté le 06-03-2003 à 15:17:37
pis les sujets sur HFR sont triés par date de dernière modification aussi, non par date de création
Marsh Posté le 06-03-2003 à 15:25:00
ce qui, en même temps, est bcp plus logique! sinon, tu aurais toujours les topic "dinausores en haut!!
Marsh Posté le 06-03-2003 à 15:46:35
arghbis a écrit : ce qui, en même temps, est bcp plus logique! sinon, tu aurais toujours les topic "dinausores en haut!! |
petit malin va
DateCreation (le m. pour l'alias de la table messages) est la date de création d'un message se rapportant à un sujet. Et le DESC, c'est pour décroissant. Donc, ma requête veut dire afficher diverses infos concernant des sujets triés dans l'ordre décroissant des dates de création de leurs messages (du message créé le plus récemment au moins récent), ceci afin d'éviter le topics dinosaures en haut
Distinct devant NumSujet, comme je l'ai dit, c'est inefficace et je sais pas pourquoi
Marsh Posté le 06-03-2003 à 20:58:27
parce que DISTINCT se rapporte à tout le resultat.
c'est j'étais toi je ferais ca en deux requètes séparées, ca serait VRAIMENT bcp plus leger.
Marsh Posté le 06-03-2003 à 21:00:53
Si tu veux quand même le faire en une seule requète, ca serait plutôt :
SELECT s.NumSujet, s.LibelleSujet, s.NbLus, s.NumTypeConversation, s.NumEtatSujet, s.NumAuteur, c.Surnom, MAX(m.DateCreation) as d FROM sujets s, messages m, comptes c WHERE s.NumAuteur = c.NumCompte AND s.NumSujet = m.NumSujet GROUP BY s.NumSujet ORDER BY d DESC LIMIT $IndiceDebut, $IndiceFin
Marsh Posté le 07-03-2003 à 08:43:20
ben tiens! je l'avais pas lue en entier ta requête,! mais le truc qui me dérangeait était de pas voir de distinct!!
sinon, si tu mets un distinct, normalement tu n'a pas besoin de group by
Marsh Posté le 07-03-2003 à 19:46:30
arghbis a écrit : ben tiens! je l'avais pas lue en entier ta requête,! mais le truc qui me dérangeait était de pas voir de distinct!! |
c'est l'inverse, le distinct porte sur tout le resultat alors que le group by porte uniquement sur le champ précisé
Marsh Posté le 08-03-2003 à 00:55:56
koi?? tu peux pas faire de distinct (numsujet)?? et uniquement sur ce champ???? bizarre...
Marsh Posté le 08-03-2003 à 08:15:51
arghbis a écrit : koi?? tu peux pas faire de distinct (numsujet)?? et uniquement sur ce champ???? bizarre... |
"DISTINCT is converted to a GROUP BY on all columns, DISTINCT combined with ORDER BY will in many cases also need a temporary table. "
Marsh Posté le 08-03-2003 à 09:51:40
ah bon, ben c bizarre qd même! c spécifique à mysql ou c dans la norme sql???
Marsh Posté le 08-03-2003 à 10:27:26
arghbis a écrit : ah bon, ben c bizarre qd même! c spécifique à mysql ou c dans la norme sql??? |
moi aussi, je pensais que je pouvais faire un distinct sur le champ NumSujet, mais je me suis vite rendu compte que ça portait sur tout le résultat.
A propos, comment on fait pour récupérer le résultat d'une requête sql et d'appliquer sur ce résultat, une seconde requête sql (je parle pas ici de requêtes sql imbriquées, hein!). Merci
Marsh Posté le 08-03-2003 à 15:52:20
précise ton idée stp!
tu trvail avec quel sgbd, paske je suis sûr que sous postgresql je peux faire un distinct numsujet et pas sur les autres
Marsh Posté le 09-03-2003 à 14:29:37
requête imbriquée :
select * from table1 where NumTable1 in (select * from Table2)
tu vois?
moi, je voulais savoir si je pouvais faire un truc du genre (je le mets en une sorte de pseudo-code hein!) :
Resultat1 = select * from table1 where Numtable1 > 5
Resultat2 = select * from Resultat1 where Numtable1 < 2
je sais, on pouvait le faire en 1 requête, mais c'est juste à titre d'exemple...
Marsh Posté le 06-03-2003 à 15:03:06
Voilà, j'ai fait un petit forum privé en php et je voudrais afficher la liste des sujets comme celui du forum de hfr. Voilà, la requête sql :
mais ça marche pas Je les ai dans l'ordre de leur NumSujet décroissant
C'est le group by qui fait chier. Sans, j'ai bien les sujets dans le bon ordre, mais dupliqués (autant de fois que de messages par sujet). J'avais donc pensé mettre un DISTINCT devant s.NumSujet, mais c'est sans effet ... Là, je suis à court d'idées...
Aidez moi, svp