0

我正在 CodeIgniter 中建立一个自定义论坛。我有四个主表:父母(类别)、孩子(板)、线程和消息(回复)。线程表仅包含线程 id、作者、标题、日期和第一条消息的 id。当查看一个线程时,它会使用“first_msg_id”列来检索线程的内容。

我想创建一个查询来获取特定板上所有回复的计数。基本上,任何与线程的 first_msg_id 字段不匹配的消息。这是我到目前为止所拥有的:

$查询 = "
                    选择
                        m.message_id,m.thread_id
                        t.thread_id, t.first_msg_id
                    FROM forum_messages AS m
                        LEFT JOIN forum_threads AS t ON t.first_msg_id != m.message_id
                    WHERE t.child_id = ".$board_id."
                    按 m.message_id 排序";

这是我得到的错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“.thread_id, t.first_msg_id FROM forum_messages AS m”附近使用正确的语法

这是我的表: 在此处输入图像描述 在此处输入图像描述

更新

好的,现在我的查询正常工作(好吧,修复了错误),它没有做我想要的......我想我的逻辑错了。我编写了一个脚本,在一块板上创建了 40 个新线程。他们都没有回复。当我对我所做的查询使用mysql num rows时,我得到1560的结果。它应该返回0。为什么会这样???哈哈。

得到它的工作。

4

2 回答 2

1

你在后面少了一个逗号m.thread_id

就像是

SELECT
    m.message_id, m.thread_id,
    t.thread_id, t.first_msg_id
FROM forum_messages AS m
    LEFT JOIN forum_threads AS t ON t.first_msg_id != m.message_id
WHERE t.child_id = ".$board_id."
ORDER BY m.message_id
于 2013-06-19T04:47:43.273 回答
1

,后面缺少逗号m.thread_id

尝试 -

$query = "SELECT m.message_id, m.thread_id, t.thread_id, t.first_msg_id ....

更合适 -

$query = "
         SELECT
         m.message_id, m.thread_id,
                                  ^
         -------------------------|
         t.thread_id, t.first_msg_id
         FROM forum_messages AS m
         LEFT JOIN forum_threads AS t ON t.first_msg_id != m.message_id
         WHERE t.child_id = ".$board_id."
         ORDER BY m.message_id
         ";
于 2013-06-19T04:47:51.087 回答