0

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

实际上,我需要两个查询,它们加入他们的结果集,这样我就可以使用 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 中做一些允许组合两个查询的结果集的事情。

4

2 回答 2

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%'

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

于 2012-08-08T08:14:40.737 回答
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 
于 2012-08-08T08:19:47.473 回答