【发布时间】:2026-02-20 00:10:02
【问题描述】:
我有 3 张桌子可供选择。其中 2 个始终是必需的(tbl_notes、tbl_clients),而第 3 个是可选的(tbl_notes_categories)。
我一直在查询中使用LEFT JOIN 与主表相关的可疑记录。
但我没有得到以下查询的任何结果。
有人能指出我如何错误地使用 LEFT JOIN 吗?
SELECT n.*, c.clientname, nc.notecategoryname
FROM tbl_notes n, tbl_clients c
LEFT JOIN tbl_notes_categories nc ON n.categoryid = nc.categoryid
WHERE n.clientid = c.clientid
AND c.clientid = 12345
ORDER BY n.dateinserted DESC
事实上,我遇到了一个 sql 错误。 #1054 - 'on Clause' 中的未知列 'n.categoryid'
categoryid 确实存在于tbl_notes 中
我可能需要重新了解 JOINS 的真正工作原理。我猜我之前不能有 2 个数据库表的 LEFT JOIN?
顺便说一句,我可以预见会有多个必填表和几个可选表。 (在这种情况下tbl_notes_categories 是可选的)
【问题讨论】:
-
尝试将
tbl_notes和tbl_clients之间的隐式连接转换为显式INNER JOIN。无论如何,这就是幕后发生的事情。 (假设它是内部连接,而不是交叉连接,正如 @LifeInTheGrey 所建议的那样。) -
你试过明确交叉连接吗?
-
为了避免 FROM 子句中的错误交换表:
FROM tbl_clients c, tbl_notes n ...