我的问题是,我目前正在处理的网站有两个产品表,而且搜索功能只搜索其中一个表。我想扩展网站的搜索页面以涵盖两个表格。
实际上,我需要两个连接结果集的查询,以便我可以使用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中做一些事情,允许组合两个查询的结果集。
答案 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