2009-01-31 5 views
1

Я относительно не знаком с MySql.Выбор нескольких значений разных таблиц

Я 2 представлен со следующей структурой

products 
{ 
pid-autoincrement, 
pname 
p_desc 
} 

services 
{ 
sid-autoincrement 
s_name 
s_desc 
} 

Im пытается выбрать продукты или услуги, которые имеют название '%<somekeyword>%'

Я использую запрос:

SELECT DISTINCT products.*, 
       services.* 
      FROM products, services 
      WHERE products.pname 
       LIKE '%mob%' 
      OR services.s_name 
       LIKE '%mob%' 

Но я получаю много повторных результатов.

Пробовал использовать соединения, но не смог найти решение.

Может кто-нибудь помочь мне с этим?

ответ

3

Вы хотите использовать UNION, как это:

SELECT DISTINCT products.pid-autoincrement AS id, 
       products.pname AS name, 
       products.p_desc AS desc 
      FROM products 
      WHERE products.pname 
       LIKE '%mob%' 
UNION 
SELECT DISTINCT services.sid-autoincrement AS id, 
       services.s_name AS name, 
       services.s_desc AS desc 
      FROM services 
      WHERE services.s_name 
       LIKE '%mob%' 
1

вы должны использовать оператор UNION

поэтому вы можете выбрать только те же столбцы (как есть только один результат)

или выберите 2 раза - 2 Результаты

1

поскольку таблицы не связаны вам придется использовать оператор UNION (как говорит Карлис), а не JOIN. Но поскольку вы, по-видимому, хотите совместно обрабатывать продукты и услуги (по крайней мере, некоторое время), вам, вероятно, лучше помещать их в один стол и добавлять столбцы для их разграничения, например:

productsandservice [need better name] 
{ 
id, 
name, 
desc, 
isaservice 
} 
Смежные вопросы