我有一个名为category的表,其中我有主类别ID和名称,每个主类别都有子类别ID和名称。我还有一个带有类别id列的产品表,该列具有数字子类别ID或者2个字母的主要类别ID例如:EL for electronics ..我的问题是如何获得最高类别,即。,每个类别中的产品数量按降序排列。
category
{
sub_cat_id - numeric
sub_cat_name - varchar
main_cat_id - varchar (2 characters)
main_cat_name
}
products
{
categoryid,//this can be either main_cat_id or sub_cat_id
}
请帮助......
答案 0 :(得分:0)
看起来它应该是直截了当的,你可以发布“CREATE TABLE”语句和一些示例行(我无法从上面的语法中“反向工程”“CREATE TABLE”...)
答案 1 :(得分:0)
实际上,我认为你不能用一个查询来做到这一点。由于表categoryid
中列products
的双重性质(即它可能是外键或类别名称),您必须以某种方式将其组合在一起在联接之后使用表main_cat_id
的{{1}}列的列,并在合并列上执行category
,但这是不可能的,AFAIK。
当然,您可以执行两个单独的SQL查询(一个用于直接在主要类别中计算产品,另一个用于计算子类别中的产品),并将其结果与一些服务器端脚本组合。
答案 2 :(得分:0)
如果主类别ID和子类别ID之间没有命名空间冲突,您可以:
select main_cat_id , count(*) as total
from category
where ( main_cat_id in (select categoryid from products)
OR
sub_cat_id in (select categoryid from products)
)
group by main_cat_id
order by total desc
然而,表面上似乎存在类别表设计的问题。 sub_cat应该是具有适当约束的不同表。