2012-02-21 4 views
2

У меня есть две таблицы, в качестве примера:Поиск разных имен столбцов в разных таблицах в MySQL

content 
- id 
- title 

news 
- id 
- myTitle 

Так я тогда хочу, чтобы иметь возможность искать как content.title и news.myTitle для того же ключевое слово, однако я не могу использовать соединение, поскольку между этими двумя таблицами нет внешнего ключа. Я пробовал несколько разных запросов, но никто не возвращал ожидаемых результатов, поэтому любая помощь была бы весьма признательна. Мне нужен простой запрос LIKE для поиска title/myTitle в обеих таблицах.

+0

Что вы имеете в виду именно для _ того же ключевого слова_? – DonCallisto

ответ

5
select content.title, 'content' as src_table from content where title = 'keyword' 
union 
select news.myTitle, 'news' as src_table from news where myTitle = 'keyword' 
+0

Вы добавили псевдонимы без обновления критериев выбора. Алиасы действительно не нужны в этом экземпляре, так как они просто выбираются. –

+0

Я удалил их, чтобы упростить запрос. –

+0

Спасибо, это отлично работает! Есть ли способ узнать, из какого запроса возникла строка, когда я просматриваю результаты? Я спрашиваю только, что у меня есть другой параметр, который нужно указать в URL-адресе, который я возвращаю для каждого, и он не будет повторно запрашивать каждый раз, чтобы узнать, из какой таблицы он пришел. – Ashley

4

UNION является вашим другом в этом вопросе (Справочную чтении: http://dev.mysql.com/doc/refman/5.6/en/union.html)

(
    SELECT 
     'content', 
     id, 
     title 
    FROM content 
    WHERE title LIKE '%.....%' 
) 
UNION 
(
    SELECT 
     'news', 
     id, 
     myTitle AS title 
    FROM news 
    WHERE myTitle LIKE '%.....%' 
) 
1

о чем?

select id, title from content 
where title like '%blah%' 
union all 
select id, myTitle from news 
where title like '%blah%' 

Обратите внимание, если вы не используете union all, то вы можете потерять запись там. Неясно, нужна ли вам это или нет.

Смежные вопросы