从两个独占表中选择以组合结果集

时间:2012-08-08 08:10:51

标签: php mysql select

我的问题是,我目前正在处理的网站有两个产品表,而且搜索功能只搜索其中一个表。我想扩展网站的搜索页面以涵盖两个表格。

实际上,我需要两个连接结果集的查询,以便我可以使用PHP来计算用户搜索查询的相关性。

mysql_query("SELECT * FROM product WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%'")

title也是product_spray表格中的字段,content也是如此。如何修改上述查询以包含product表和product_spray表的结果?

我不确定它是否是我需要的JOIN,因为两个表之间没有链接,它们彼此独占。虽然,我对MySQL不是很有经验,所以如果有什么我想念的,请告诉我。

我试过这个:

mysql_query("SELECT * FROM product, product_spray WHERE product.title LIKE '%$keyword%' OR product.content LIKE '%$keyword%' OR product_spray.title LIKE '%$keyword%' OR product_spray.content LIKE '%$keyword%'")

结果集没有正确显示,似乎结合了结果。

基本上,我需要的是拥有一个查询,但使用两个独占的SELECT语句。可以这样做吗?

我甚至愿意在PHP中做一些事情,允许组合两个查询的结果集。

2 个答案:

答案 0 :(得分:2)

我想你想加入行(不是列对吗?)。要解决您的问题,您将UNION用于此

SELECT  columnA
FROM    product
WHERE   title LIKE '%$keyword%' OR 
        content LIKE '%$keyword%'
UNION
SELECT  columnA
FROM    product_spray
WHERE   title LIKE '%$keyword%' OR 
        content LIKE '%$keyword%'

确保两个查询在结果集中都有相同的列。

答案 1 :(得分:0)

mysq_query("SELECT A.*,B.* FROM 
product as A
left join product_spray as B ON B.title LIKE '%$keyword%' = A.title LIKE '%$keyword%' 
WHERE B.content LIKE '%$keyword%' OR B.content LIKE '%$keyword%'")
AND don't A.*  this sol - select A.title , A.content from xxx