Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Ricerca ultime discussioni in un forum

    Ciao a tutti, provo a disturbarvi con una richiesta...

    ho un forum la cui tabella principale é la seguente:
    codice:
    CREATE TABLE `forum_messages` (
      `id` int(11) NOT NULL auto_increment,
      `parent` int(11) default '0',
      `thread ` int(11) default '0',
      `catid` int(11) NOT NULL default '0',
      `name` tinytext,
      `userid` int(11) NOT NULL default '0',
      `email` tinytext,
      `subject ` tinytext,
      `time` int(11) NOT NULL default '0',
      `ip` varchar(15) default NULL,
      `topic_emoticon` int(11) NOT NULL default '0',
      `locked` tinyint(4) NOT NULL default '0',
      `hold` tinyint(4) NOT NULL default '0',
      `ordering` int(11) default '0',
      `hits` int(11) default '0',
      `future3` varchar(25) default NULL,
      PRIMARY KEY  (`id`),
      KEY `thread` (`thread`),
      KEY `id` (`id`),
      KEY `parent` (`parent`),
      KEY `catid` (`catid`),
      KEY `ip` (`ip`),
      KEY `userid` (`userid`)
    ) TYPE=MyISAM AUTO_INCREMENT=1770 ;
    Ho usato il grassetto sui due campi problematici. Il campo subject contiene il titolo del post e della sua replica, ad esempio:
    "Argomento 1"
    "Re: Argomento 1"
    "Re: Argomento 1"
    "Argomento 2"
    "Re: Argomento 1"
    "Re: Argomento 2"
    e quello che unisce i vari post e sottopost preceduti da Re: é il campo thread che avrà per tutti questi il medesimo valore:

    subject="Argomento 1" , thread=1
    subject="Re: Argomento 1" , thread=1
    subject="Re: Argomento 1" , thread=1
    subject="Argomento 2" , thread=2
    subject="Re: Argomento 1" , thread=1
    subject="Re: Argomento 2" , thread=2

    Ora che ho spiegato la struttura, vengo al quesito, mi occorrerebbero una o più query che mi interrogassero la tabella individuando gli ultimi 5 Argomenti o Topic, senza il "Re:", contando per ciascuno quante risposte ha avuto e l'ultimo autore che ha scritto che si individua dal campo name. Mi rendo conto che non siete qui a risolvere problemi altrui, mi basterebbe risolvere i problemi un pò alla volta.

    Ho una query molto semplice che mi individua semplicemente le ultime righe inserite nella tabella e non le raggruppa per Argomenti:
    codice:
    $database->setQuery("SELECT * from forum_messages order by time desc limit 5");
    ed é ovvio che non mi basta, grazie davvero in anticipo

  2. #2
    praticamente devo ricercare gli ultimi post inseriti ordinati per time decrescente ( order by time desc limit 5 ) e che abbiano il campo thread diverso tra tutti loro altrimenti si riferirebbe ad una medesima discussione, é questo secondo punto che mi blocca...

  3. #3
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    prova con il group by:
    codice:
    SELECT * from forum_messages 
    group by thread
    order by time desc limit 5
    think simple think ringo

  4. #4
    avevo già provato ma raggruppando con group thread mi prende la prima riga con thread uguale, invece io vorrei l'ultima...

  5. #5
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da marcello74
    avevo già provato ma raggruppando con group thread mi prende la prima riga con thread uguale, invece io vorrei l'ultima...
    sicuro??
    io ho provato la query con una tabella simile alla tua e funziona
    think simple think ringo

  6. #6
    Si la query mi da in ordine di tempo decrescente i primi post delle ultime discussioni e me li ordina in base a quella data, falsando così l'uso del forum, si dovrebbe vedere infatti l'ultimo post e visualizzarli in base a quella data.

    Allego il contenuto delle prime 30 righe della tabella qui

    Grazie per l'aiuto

  7. #7
    Risolto:
    codice:
    SELECT DISTINCT *, MAX(time) AS ultimamodifica
    FROM mos_sb_messages GROUP BY thread
    ORDER BY ultimamodifica DESC
    LIMIT $top
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.