19. juni 2007 - 19:04Der er
12 kommentarer og 1 løsning
10 senste aktive debatter
Hej eksperter
Mig og nogle gutter har lavet et debasystem, men skal nu lave det sidste dertil, nemlig så man på forsiden kan se de 10 debatemner, som har været aktive (Nyoprettede emner skal også gå ind her under.
Jeg har et felt, date, med timestamp, både for debatemner og debatindlæg. Min debatstruktur ser således ud:
CREATE TABLE `debate_topics` ( `id` int(11) NOT NULL auto_increment, `userid` int(11) NOT NULL default '0', `subjectid` int(11) NOT NULL default '0', `title` varchar(255) NOT NULL default '', `date` int(11) NOT NULL default '0', `content` text NOT NULL, `ip` varchar(255) NOT NULL default '', `views` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
CREATE TABLE `debate_entries` ( `id` int(11) NOT NULL auto_increment, `topicid` int(11) NOT NULL default '0', `userid` int(11) NOT NULL default '0', `content` text NOT NULL, `date` int(11) NOT NULL default '0', `ip` varchar(255) NOT NULL default '', `subjectid` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Er det ikke noget i stil med: Dette vil give dig de sidste 10 indlæg, men samme topic kan være med flere gange: SELECT * FROM debate_entries ORDER BY date DESC LIMIT 10
Dette vil give dig de sidste 10 indlæg og være fra forskellige topics: SELECT * FROM debate_entries GROUP BY topicid ORDER BY date DESC LIMIT 10
Og hvis du også vil have title med, så bliver det: SELECT de.*, dt.title FROM debate_entries AS de INNER JOIN debate_topics AS dt ORDER BY de.date DESC LIMIT 10
SELECT dt.title, dt.data AS dDate FROM debate_topics AS dt UNION SELECT de.content, de.date AS dDate FROM debate_entries AS de ORDER BY dDate DESC LIMIT 10
altså dt.data findes ikke, men hvis der skulle så date, så virker det, men viser slet ikke det rigtige.
Jeg tror den henter indlæg ud eller sådan noget.
Jeg prøver lige at forklare igen.
Vi vil have de 10 seneste aktive debatemner på en liste. Hver debatemne må kun optræde en gang. En aktiv debatemne er også et helt nyoprettet en, så den skal tage højde for indlæg og emners date.
Altså vi vil have en liste over debatter med som senest har været aktive. Hver debatemne må kun optræde en gang på listen. Men så som ekstra ting, vil vi gerne have at nye debat emner, uden indlæg også kommer på listen.
SELECT dt.title,dt.date AS dtDate,de.date AS dtDate FROM debate_topics AS dt LEFT JOIN dabate_entries AS de ON dt.id = de.topicid ORDER BY IF(ISNULL(de.date),dt.date,de.date) DESC LIMIT 10
SELECT dt.title FROM debate_topics AS dt LEFT JOIN debate_entries AS de ON dt.id = de.topicid GROUP BY dt.id ORDER BY IF( ISNULL( de.date ) , dt.date, de.date ) DESC LIMIT 10
SELECT DISTINCT de.topicid,dt.title,de.date,dt.date FROM debate_topics AS dt LEFT JOIN debate_entries AS de ON dt.id = de.topicid ORDER BY IFNULL(de.date, dt.date) DESC LIMIT 10
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.