我有一个像这样的类别表
表 - 类别
cat_id cat_name parent_id
---------------------------------------
21 Properties 0
--------------------------------------
32 For Rent 21
---------------------------------------
34 Appartments 32
---------------------------------------
35 Houses and villas 32
--------------------------------------
36 Builder Floors 32
-----------------------------------------
像这样的产品表
表 - 产品
ProductID ProductName CategoryID
------------------------------------------------------
39 villa 35
-----------------------------------------------------
40 Flat 35
----------------------------------------------------
41 appartment 34
------------------------------------------------------
42 Builder 36
-----------------------------------------------------
我想获取parrent类属性(21)中存在的所有产品..同样的查询需要在单个类别的情况下工作,如果cateogryID = 35
我需要产品存在于仅CategoryID 35
..
目前iam使用的查询是:
select p.ProductID, p.ProductTitle,p.SalePrice,p.C_Date,p.ProductShortDescription, c.cat_name,
c.cat_id
from products p JOIN
(select * from categories where cat_id =32 OR parent_id = 32 ) c
on p.CategoryID = c.cat_id
这个查询对我来说很好......但是在parrent类别属性(21)的情况下它不起作用..在所有其他情况下它的工作正常。
请帮我改变上面的查询..对于属性(21)
答案 0 :(得分:0)
您可以使用 LEFT JOIN
SELECT
p.ProductID,
p.ProductTitle,
p.SalePrice,
p.C_Date,
p.ProductShortDescription,
c.cat_name,
c.cat_id
FROM
products p
LEFT JOIN
(SELECT
*
FROM
categories
WHERE
cat_id = 32 OR parent_id = 32) c ON p.CategoryID = c.cat_id
<强>更新强>
SELECT
p.ProductID,
p.ProductTitle,
p.SalePrice,
p.C_Date,
p.ProductShortDescription,
c.cat_name,
c.cat_id
FROM
products p
LEFT JOIN
categories c ON p.CategoryID = c.cat_id
WHERE
c.cat_id = 21 OR c.parent_id = 21