Поиск данных из нескольких таблиц - PullRequest
0 голосов
/ 30 октября 2009

У меня есть 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, но я не знаю, как связать комментарии с основным без этого.

Ответы [ 2 ]

6 голосов
/ 30 октября 2009

Попробуйте использовать левое внешнее соединение двух таблиц.

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 голос
/ 30 октября 2009

Чтобы получить запись, даже если парная запись не существует, вам нужно использовать левое внешнее соединение. Например:

FROM
    ticket_data d 
    LEFT JOIN
    ticket_comment c ON c.tid = d.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...