Как узнать мою таблицу результатов в поиске нескольких таблиц? - PullRequest
1 голос
/ 14 февраля 2010

Я ищу в двух таблицах строку.

$sql="SELECT download.title FROM download
      WHERE download.title LIKE '%$search%' 
      UNION 
      SELECT news.title FROM news
      WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%' ";  

Как я могу узнать, из какой таблицы найдены записи?

Ответы [ 4 ]

3 голосов
/ 14 февраля 2010

Почему бы просто не добавить столбец дискриминатора в ваш набор результатов? Это позволяет вам делать запросы один раз и получать результаты по источникам.

SELECT 'DOWNLOAD' AS SOURCE, download.title FROM download WHERE download.title LIKE '%$search%' 
UNION ALL
SELECT 'NEWS', news.title FROM news WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%';
1 голос
/ 14 февраля 2010

Вы можете добавить дополнительный столбец для обозначения источника, который затем можно использовать для определения

, например

$

sql="SELECT download.title, 'download' as source FROM download WHERE download.title LIKE '%$search%' 
UNION 
SELECT news.title 'news' as source FROM news, WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%' ";

Хотя согласно предыдущему комментарию, запрос дважды может быть лучше, чем использование union

1 голос
/ 14 февраля 2010

В PHP вы можете использовать функцию mysql_field_table .

0 голосов
/ 14 февраля 2010

Самый простой способ - сделать запрос дважды, по одному разу для каждой таблицы.Тогда вы будете знать, в каком из них были найдены результаты. Если вы хотите отобразить их вместе и отсортировать, вы можете взять два набора результатов и объединить их вместе перед их отображением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...