0

在这里,我遇到了一个查询

我有这张 PRODUCT 表,其中列出了带有产品 ID、标题、子类别 ID 和类别 ID 的产品。还有另一个表(procat),我有 procat id 和 parent id , procat title 。所以基本上一个具有父 id 的 id 是一个子类别,如果 0 那么它就是一个类别,这就是我的逻辑

现在基本上我想要做的是获取产品标题、类别标题和子类别标题我可以得到这个类别但是我怎么能得到子类别呢

SELECT
product.id,
product.title AS product_title,
procat.title  AS category_title  
FROM product,
procat 
WHERE product.procatid = procat.id
OR  product.procatsubid = procat.id
AND product.procatid = '31'
AND product.procatsubid = '21'

我也尝试过左加入,但无济于事

4

1 回答 1

0

编辑- 感谢您的澄清。似乎 Product 与类别的外键可能存在冗余(即产品可能应该只由 procat SubCategory 分类,并且通过导航 procat.parent (可能递归)到达父类别 id

SELECT
  product.id,
  product.title AS product_title,
  cat.title  AS category_title,
  subcat.title AS subcategory_title  
FROM product 
   INNER JOIN procat cat on product.procatid = cat.id
   INNER JOIN procat subcat on product.procatsubid = subcat.id
  procat
WHERE product.procatid = '31'
      AND product.procatsubid = '21'
      -- The below should be redundant, but I guess you can use them to ensure that the product FKs are correct and the table integrity is maintained
      AND cat.parentid = 0
      AND subcat.parentid <> 0
于 2012-05-01T07:53:49.600 回答