16. november 2007 - 15:59Der er
3 kommentarer og 1 løsning
left join og select
hvordan gør man nedenstående korrekt?
$sql = "SELECT forum.id, tmp.num FROM $DB.forum forum LEFT JOIN ( SELECT COUNT(forum.id) AS num FROM $DB.forum forum LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum.id WHERE forum.thread_id=76 && forum.id!=forum.thread_id && COALESCE(att_forum.att_remove, 0)=0 GROUP BY forum.thread_id ) AS tmp";
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
Hvis man laver en inner join i stedet ser det ud til at virke
$sql = "SELECT forum.id, tmp.num FROM $DB.forum forum INNER JOIN ( SELECT COUNT(forum2.id) AS num FROM $DB.forum forum2 LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum2.id WHERE forum2.thread_id=76 && forum2.id!=forum2.thread_id $sql_where GROUP BY forum2.thread_id ) AS tmp";
men hvordan kan man få min where clause i min inner join (forum2.thread_id=76) ændret så den i stedet tager forum.id fra den ydre table?
hvis jeg skriver forum2.thread_id=forum.id får jeg fejl?
$sql = "SELECT forum.id, tmp.num FROM $DB.forum forum INNER JOIN ( SELECT COUNT(forum.id) AS num FROM $DB.forum forum LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum.id WHERE forum.id!=forum.thread_id $sql_where GROUP BY forum.thread_id ) AS tmp ON tmp.thread_id=forum.id WHERE forum.id!=forum.thread_id";
undskyld.. sådan her.. nu får jeg dog ingen fejl, men til gengæld heller ingen udtræk..
hvem kan hjælpe mig?
$sql = "SELECT forum.id, tmp.num FROM $DB.forum forum INNER JOIN ( SELECT forum.thread_id, COUNT(forum.id) AS num FROM $DB.forum forum LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum.id WHERE forum.id!=forum.thread_id $sql_where GROUP BY forum.thread_id ) AS tmp ON tmp.thread_id=forum.id WHERE forum.id!=forum.thread_id";
$sql = "SELECT forum.id, forum.subject, forum.time, att_forum.att_lock, IF(att_forum.att_stick, forum.time, 0) AS att_stick, att_forum.att_remove, tmp.max_time, tmp.num FROM ($DB.forum forum LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum.id) LEFT JOIN ( SELECT forum.thread_id, MAX(forum.time) AS max_time, COUNT(forum.id)-1 AS num FROM $DB.forum forum LEFT JOIN $DB._att_forum att_forum ON att_forum.contr_id=forum.id WHERE 1 $sql_where GROUP BY forum.thread_id ) tmp ON tmp.thread_id=forum.id WHERE forum.locale_id='$LID' && forum.forum_id='$key' && forum.id=forum.thread_id $sql_where ORDER BY att_stick DESC, max_time DESC LIMIT ".$limit_arr[$key];
:)
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.