PDA

View Full Version : Fetching thread content from a non-VB-page - a small problem


AlexanderT
09-30-2003, 08:34 AM
I used the code from external.php (vB3 beta) to figure out how to extract forum thread titles from a non-vb page. But I also like to extract the content of these threads, so I went ahead and did the following:

I replaced
// query last 15 threads from visible / chosen forums
$threads = $DB_site->query("
SELECT threadid, thread.title, thread.lastposter, thread.lastpost, thread.postusername, thread.dateline, forum.forumid, forum.title AS forumtitle
FROM " . TABLE_PREFIX . "thread AS thread
INNER JOIN " . TABLE_PREFIX . "forum AS forum ON(forum.forumid = thread.forumid)
LEFT JOIN " . TABLE_PREFIX . "deletionlog AS deletionlog ON (deletionlog.primaryid = thread.threadid AND deletionlog.type = 'thread')
WHERE thread.forumid IN(" . implode(',', $forumids) . ") $forumchoice
AND thread.visible = 1
AND deletionlog.primaryid IS NULL
ORDER BY thread.dateline DESC
LIMIT 15
");

with
$previewfield = "post.pagetext AS preview,";
$previewjoin = "LEFT JOIN " . TABLE_PREFIX . "post AS post ON(post.postid = thread.firstpostid)";

// query last 15 threads from visible / chosen forums
$threads = $DB_site->query("
SELECT $previewfield
threadid, thread.title, thread.lastposter, thread.lastpost, thread.postusername, thread.dateline, forum.forumid, forum.title AS forumtitle
FROM " . TABLE_PREFIX . "thread AS thread
$previewjoin
INNER JOIN " . TABLE_PREFIX . "forum AS forum ON(forum.forumid = thread.forumid)
LEFT JOIN " . TABLE_PREFIX . "deletionlog AS deletionlog ON (deletionlog.primaryid = thread.threadid AND deletionlog.type = 'thread')
WHERE thread.forumid IN(" . implode(',', $forumids) . ") $forumchoice
AND thread.visible = 1
AND deletionlog.primaryid IS NULL
ORDER BY thread.dateline DESC
LIMIT 15
");

Unfortunately, this code causes the following error:
Database error in vBulletin 3.0.0 Beta 6:

Invalid SQL:
SELECT post.pagetext AS preview,
threadid, thread.title, thread.lastposter, thread.lastpost, thread.postusername, thread.dateline, forum.forumid, forum.title AS forumtitle
FROM thread AS thread
LEFT JOIN post AS post ON(post.postid = thread.firstpostid)
INNER JOIN forum AS forum ON(forum.forumid = thread.forumid)
LEFT JOIN deletionlog AS deletionlog ON (deletionlog.primaryid = thread.threadid AND deletionlog.type = 'thread')
WHERE thread.forumid IN(12,14,13,8,29,15,3,28,4,5,7,6,23,26,25,24,27,10 ,11,20,22,21,18,17,30,31,32,33,34,35,36,37,38,39) AND thread.forumid IN(14)
AND thread.visible = 1
AND deletionlog.primaryid IS NULL
ORDER BY thread.dateline DESC
LIMIT 15

mysql error: Column: 'threadid' in field list is ambiguous

Does any VB- or MySQL-guru know what I did wrong here? I would like to extract thread.title AND pagetext in a single query. :confused:

Lesane
09-30-2003, 08:53 AM
It's telling you it doesn't know which table "threadid" is in. Prefix the field with the table name, like you did with your other fields. (thread.threadid)

AlexanderT
09-30-2003, 10:36 AM
Lesane, so easy, yet so great :) Of course it did the work.
Thanks.