06. november 2007 - 17:12Der er
3 kommentarer og 1 løsning
left join - er attrib sat
Jeg har et forum. Forummet har en tilknyttet table med attributterne som f.eks. att_remove
forum: -------- id | ... | subject | msg
att_forum: -------- contr_id | att_remove | ...
Jeg laver en query, hvor jeg henter en oversigt over seneste tråde i mit forum, men jeg kan ikke få den til at vise det aktuelle antal svar. Hvis der er slettede (att_remove=1) indlæg i tråden bliver de stadig talt med?
SELECT forum.id, forum.subject, att_forum.att_remove, MAX(forum2.time) AS max_time, COUNT(forum2.thread_id)-1 AS num FROM ($DB.forum forum LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum.id) INNER JOIN $DB.forum forum2 ON forum2.thread_id=forum.id WHERE forum.forum_id='$key' && forum.id=forum.thread_id && COALESCE(att_forum.att_remove, 0)=0 GROUP BY forum.thread_id ORDER BY att_stick DESC, max_time DESC LIMIT 5
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Jeg har to eksempler på queries, hvor rækker hvor att_remove som er sat ikke kommer med i udtrækket
SELECT forum.id FROM $DB.forum forum LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum.id WHERE forum.thread_id='".$_GET['id']."' && COALESCE(att_forum.att_remove, 0)=0 ORDER BY forum.id
SELECT forum.id, MAX(forum2.time) AS max_time FROM ($DB.forum forum LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum.id) INNER JOIN $DB.forum forum2 ON forum2.thread_id=forum.id WHERE forum.forum_id='".$_GET['tab']."' && forum.id=forum.thread_id && COALESCE(att_forum.att_remove, 0)=0 GROUP BY forum.thread_id ORDER BY max_time DESC
Jeg kan ikke helt forstå hvorfor "COALESCE(att_forum.att_remove, 0)=0" i det sidste eksempel nærmest bliver overset, men hvor der til gengæld bliver taget højde for det i det øverste. Opbyngingen er for så vidt den samme
Jeg tror problemet er gået op for mig. Man skal jo alle tilhørende indlæg igennem for at se om de er blevet slettet, og jeg undersøger kun om indlæget som starter tråden er :)
Er der en som hjælpe med at lave en udvidelse af den nederste query, så man få det reele optælling af indlæg i tråden? :)
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.