我正在CodeIgniter中构建一个自定义论坛。我有四个主表:父类(类别),子(板),线程和消息(回复)。线程表仅包含第一条消息的线程ID,作者,标题,日期和ID。查看线程时,它会使用“first_msg_id”列来检索线程的内容。
我想创建一个查询,获取特定主板中所有回复的计数。基本上,任何与线程的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";
这是我得到的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.thread_id, t.first_msg_id FROM forum_messages AS m ' at line 3
这是我的表格:
好的,现在我的查询工作正常(好了,修正了错误),它不是我想要的......我认为我的逻辑错了。我写了一个脚本,在一个板上创建了40个新线程。他们都没有回复。当我使用mysql num行与我的查询时,我得到1560的结果。它应该返回0.为什么会发生这种情况?洛尔。
搞定了。
答案 0 :(得分: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
答案 1 :(得分: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
";