我有2个表,包含我要搜索的信息,主表和注释表。主表包含时间戳,主题等。而注释表包含主表中各个记录的注释。它基本上是一个简单的票务系统。
我需要能够在同一个查询中搜索主表和注释表中的内容。这是我现在的查询:
SELECT DISTINCT d.* FROM ticket_data d, ticket_comment c WHERE
(
d.subject LIKE '%test%' OR
d.message LIKE '%test%' OR
c.comment LIKE '%test%'
)
AND c.tid = d.id
这适用于包含注释(c.tid)的票证,但如果没有可用的注释,则不会返回任何结果。我知道这是由于查询的c.tid = d.id部分,但我不知道如何将注释与main连接而不这样做。
答案 0 :(得分:6)
尝试在两个表上使用左外连接。
SELECT DISTINCT d.* FROM ticket_data d
LEFT OUTER JOIN ticket_comment c on c.tid = d.id WHERE
(
d.subject LIKE '%test%' OR
d.message LIKE '%test%' OR
c.comment LIKE '%test%'
)
答案 1 :(得分:1)
要获取记录,即使配对记录不存在,也需要使用左外连接。例如:
FROM
ticket_data d
LEFT JOIN
ticket_comment c ON c.tid = d.id