Выбор нескольких значений разных таблиц - PullRequest
1 голос
/ 31 января 2009

Я относительно новичок в MySql.

У меня есть 2 таблицы со следующей структурой

products
{
pid-autoincrement,
pname
p_desc
}

services
{
sid-autoincrement
s_name
s_desc
}

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

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

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 31 января 2009

Вы хотите использовать 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 голос
/ 31 января 2009

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

productsandservice [need better name]
{
id,
name,
desc,
isaservice
}
1 голос
/ 31 января 2009

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

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

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

...