Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
714 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Afficher mes sujets dans l'ordre comme celui du forum de hfr

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher mes sujets dans l'ordre comme celui du forum de hfr

n°324678
rufo
Pas me confondre avec Lycos!
Posté le 06-03-2003 à 15:03:06  profilanswer
 

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 :
 

Code :
  1. "SELECT s.NumSujet, s.LibelleSujet, s.NbLus, s.NumTypeConversation, s.NumEtatSujet, s.NumAuteur, c.Surnom FROM sujets s, messages m, comptes c WHERE s.NumAuteur = c.NumCompte AND s.NumSujet = m.NumSujet GROUP BY s.NumSujet ORDER BY m.DateCreation DESC LIMIT $IndiceDebut, $IndiceFin" ;


 
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 :jap:

mood
Publicité
Posté le 06-03-2003 à 15:03:06  profilanswer
 

n°324689
arghbis
salops de dauphins
Posté le 06-03-2003 à 15:14:02  profilanswer
 

ben tu mets un distinct sur le numsujet et pi ça roule nom???

n°324698
drasche
Posté le 06-03-2003 à 15:17:37  profilanswer
 

pis les sujets sur HFR sont triés par date de dernière modification aussi, non par date de création :heink:

n°324708
arghbis
salops de dauphins
Posté le 06-03-2003 à 15:25:00  profilanswer
 

ce qui, en même temps, est bcp plus logique! sinon, tu aurais toujours les topic "dinausores en haut!!  :lol:

n°324753
rufo
Pas me confondre avec Lycos!
Posté le 06-03-2003 à 15:46:35  profilanswer
 

arghbis a écrit :

ce qui, en même temps, est bcp plus logique! sinon, tu aurais toujours les topic "dinausores en haut!!  :lol:  


 
petit malin va :lol:
 
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 :(

n°325110
joce
Architecte / Développeur principal
"BugHunter"
Posté le 06-03-2003 à 20:58:27  profilanswer
 

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.

n°325112
joce
Architecte / Développeur principal
"BugHunter"
Posté le 06-03-2003 à 21:00:53  profilanswer
 

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

n°325655
arghbis
salops de dauphins
Posté le 07-03-2003 à 08:43:20  profilanswer
 

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!!  :whistle:  
sinon, si tu mets un distinct, normalement tu n'a pas besoin de group by

n°326314
joce
Architecte / Développeur principal
"BugHunter"
Posté le 07-03-2003 à 19:46:30  profilanswer
 

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!!  :whistle:  
sinon, si tu mets un distinct, normalement tu n'a pas besoin de group by

:non: c'est l'inverse, le distinct porte sur tout le resultat alors que le group by porte uniquement sur le champ précisé


Message édité par joce le 08-03-2003 à 08:16:24
n°326516
arghbis
salops de dauphins
Posté le 08-03-2003 à 00:55:56  profilanswer
 

koi?? tu peux pas faire de distinct (numsujet)?? et uniquement sur ce champ???? bizarre...

mood
Publicité
Posté le 08-03-2003 à 00:55:56  profilanswer
 

n°326551
joce
Architecte / Développeur principal
"BugHunter"
Posté le 08-03-2003 à 08:15:51  profilanswer
 

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. "

n°326553
arghbis
salops de dauphins
Posté le 08-03-2003 à 09:51:40  profilanswer
 

ah bon, ben c bizarre qd  même! c spécifique à mysql ou c dans la norme sql???  :heink:

n°326561
rufo
Pas me confondre avec Lycos!
Posté le 08-03-2003 à 10:27:26  profilanswer
 

arghbis a écrit :

ah bon, ben c bizarre qd  même! c spécifique à mysql ou c dans la norme sql???  :heink:  


 
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 :jap:

n°326661
arghbis
salops de dauphins
Posté le 08-03-2003 à 15:52:20  profilanswer
 

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

n°327350
rufo
Pas me confondre avec Lycos!
Posté le 09-03-2003 à 14:29:37  profilanswer
 

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...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Afficher mes sujets dans l'ordre comme celui du forum de hfr

 

Sujets relatifs
[Divers] C combien un forum Présence PC ?[C,Allegro] Afficher la liste des repertoires contenus sur le disque
forum et livre d'orMon forum ne compte que les messages de l'admin !
Afficher du texte HTML au milieu d'un site en FlashAfficher les valeurs d'un champs commençant par une lettre précise?
Afficher la valeur décimale d'une variable de type byteafficher une page dans un Iframe en cliquant sur un lien ss refresh ?
[JS] Afficher un certain nombre de fois une zonenouveau forum php
Plus de sujets relatifs à : Afficher mes sujets dans l'ordre comme celui du forum de hfr


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR