如何用 MySQL 查询语句匹配两个表中特定类别,即使产品没有直接关联到该类别?

如何用 mysql 查询语句匹配两个表中特定类别,即使产品没有直接关联到该类别?

如何编写 mysql 查询语句以匹配两个表中的特定类别?

在产品表和产品扩展分类表中,产品可能具有多个扩展分类。如何编写查询语句以获取根据特定类别查找的产品,即使该产品没有直接关联到该类别也可以查找出来?

以下错误查询示例:

select p.*
from t_product as p , t_product_category as pc
where ( p.category_id in ( 1,2 ) or ( p.product_id = pc.product_id and pc.category_id in ( 1,2 ) ) )
group by p.product_id
order by p.seq asc, p.product_id desc
limit 0, 20

正确的查询语句如下:

SELECT p.*
FROM t_product AS p 
LEFT JOIN t_product_category AS pc ON p.product_id = pc.product_id 
WHERE p.category_id IN (1,2) OR pc.category_id IN (1,2) 
GROUP BY p.product_id 
ORDER BY p.seq ASC, p.product_id DESC 
LIMIT 0, 20

此查询使用 left join 来匹配 t_product 和 t_product_category 表,并使用 or 条件来获取符合 category_id 标准的记录。即使该产品本身没有直接关联到该类别,也可以查找出具有扩展分类的产品。

以上就是如何用 MySQL 查询语句匹配两个表中特定类别,即使产品没有直接关联到该类别?的详细内容,更多请关注其它相关文章!