选择多个值不同的表

时间:2009-01-31 09:40:29

标签: join multiple-tables

我对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 个答案:

答案 0 :(得分: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 :(得分:1)

你必须使用UNION运算符

因此,您只能选择相同的列(因为只有一个结果)

或您选择2次 - 2次结果

答案 2 :(得分:1)

因为这些表不相关,所以你必须使用UNION运算符(如karlis所说),而不是JOIN。但是,由于您显然希望一起处理产品和服务(至少在某些时候),您可能最好将它们放入一个表中并添加一列来区分它们,如下所示:

productsandservice [need better name]
{
id,
name,
desc,
isaservice
}