SQL:通过选定的类别ID过滤查询以过滤产品

时间:2015-09-22 13:23:48

标签: c# mysql .net sql-server inner-join

enter image description here

图片中显示的两个表格,即产品 ProductCategory 。 现在的问题是,(假设)从前端选择的类别( C_ID )是" 3 "," 5 "," 4 "。然后输出必须是" wer "借助加入产品表。

如果选择的类别为" 5 "," 4 "," 8 ",然后输出必须是" 没有"。你能帮我写一个SQL查询来做吗? 注意:选择类别后,只能显示常用产品。

3 个答案:

答案 0 :(得分:1)

这可能会有所帮助:

         declare var1 varchar(100)
      if exists (select 1 from productcategory where C_id in ('3','4','5')
         begin 
         set @var1= (select top 1 b.name 
         from productcategory a 
         join product b 
         on a.P_id=b.id) 
         end
       else set @var1='Nothing'

Join操作将名称存储在var1中,您可以编写一个返回var1的函数。

答案 1 :(得分:1)

尝试

SELECT MAX(ISNULL(Name,'Nothing')) FROM
(SELECT MAX(Product.Name) AS Name
 FROM Product INNER JOIN ProductCategory ON ProductCategory.P_ID = Product.ID
 WHERE ProductCategory.C_ID IN (3,4,5)
 HAVING COUNT(*) = 1)Q1 

显然将(3,4,5)替换为给定设置传入的内容。

答案 2 :(得分:0)

您需要使用以下内容:

Spring HATEOAS

或使用类似的东西:

if ((select count(distinct product.name) from...) > 1) select 'Nothing'
else select distinct product.name from ...