从多个表中搜索数据

时间:2009-10-29 21:18:57

标签: sql search

我有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连接而不这样做。

2 个答案:

答案 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