好的,所以我有3个mysql表,我需要从中提取数据。任何与连接有关的事情都让我陷入困境!
表1 =产品(productid,name)
表2 =类别(categoryid,name)
表3 = categoryproduct(categoryid,productid) - 我的联接表
我有一系列产品ID,我需要随机选择与这些产品属于同一类别的产品。
我们的想法是,查询结果会在我的购物车中显示客户可能喜欢的类似/相关产品的部分
类似
SELECT name etc FROM table1
WHERE table2.categoryid of results of the query = table3.categoryid of current products
ORDER BY RAND()
LIMIT 3
我该怎么写?
答案 0 :(得分:1)
假设您正在使用PHP,以下方法将从数据库中获取10个相关产品。
$productids = array(1002,789,999,203,321);
$sql = '
SELECT * FROM
products p JOIN categoryproduct pc
ON p.productid = pc.productid
WHERE pc.categoryid IN(
SELECT DISTINCT(categoryid) FROM
products inner_p JOIN categoryproduct inner_pc
ON inner_p.productid = inner_pc.productid
WHERE inner_p.productid IN('.implode(',',$productids).')
)
ORDER BY RAND()
LIMIT 10';
答案 1 :(得分:0)
如果我已正确理解您的问题,那么此查询可能有所帮助。在这里,您可以使用逗号分隔的字符串代替子查询,该字符串包含用户选择的不同产品的categoryid。
select p.name
from products p,categoryproduct cp
where p.productid=cp.productid
and cp.categorid in(
select categoryid
from cartitems)
order by RAND()