項目:經典ASP的VBScript/SQL Server 2012的SQL服務器選擇計數>超過1個
我有2個表,Products
和Categories
。
我想建立一個SQL查詢將返回ONLY有不止一個產品的類別。
2個表格之間的公鑰是Category_id
(存在於Products
表格中,也存在於Categories
表格中)。
項目:經典ASP的VBScript/SQL Server 2012的SQL服務器選擇計數>超過1個
我有2個表,Products
和Categories
。
我想建立一個SQL查詢將返回ONLY有不止一個產品的類別。
2個表格之間的公鑰是Category_id
(存在於Products
表格中,也存在於Categories
表格中)。
你試試這個:
SELECT *
FROM Categories C
WHERE C.Category_id IN (SELECT P.Category_id FROM Products P GROUP BY P.Category_id HAVING COUNT(*) > 1)
該問題明確指出**僅返回**具有**多於一個**產品的類別*您的答案不符合此要求。 – iamdave
非常感謝。我編輯過。 –
@Tien阮 你的代碼工作完美! 但我忘了東西在我最初的問題非常重要: 在「產品」表我也有一個名爲「einai_ram」字段。該字段的數據類型是「BIT」。 所以我想在查詢中添加「einai_ram」字段必須爲TRUE(選中)。 – user2986570
可以使用having
子句這種類型的查詢,它過濾數據集後做所有的集合體:
declare @Categories table(CategoryID int);
declare @Products table(ProdID int, CategoryID int);
insert into @Categories values(1),(2),(3);
insert into @Products values(10,1),(20,1),(30,2),(40,2),(50,3);
select c.CategoryID
,count(1) as ProductCount
from @Categories c
left join @Products p
on(c.CategoryID = p.CategoryID)
group by c.CategoryID
having count(1) > 1;
輸出:
+------------+--------------+
| CategoryID | ProductCount |
+------------+--------------+
| 1 | 2 |
| 2 | 2 |
+------------+--------------+
使用簡單Group by
與Having
在明年演示: -
create table Products (ProductID int, name varchar(50), Category_id int)
insert into Products
values
(1,'aaaa',1),
(2,'bbbb',1),
(3,'ccccc',2),
(4,'11111',2),
(5,'11111ccc',3)
create table Categories (Category_id int, name varchar(50))
insert into Categories
values
(1,'Letters'),
(2,'Numbers'),
(3,'NumbersAndLetters')
-- CategoryID = 3 has only one product ..
select p.Category_id ,count(p.ProductID) CountProducts from
Products p inner join Categories c
on p.Category_id = c.Category_id
group by p.Category_id
having count(p.ProductID) > 1
結果: -
Category_id CountProducts
1 2
2 2
您是否在尋找'having'? '......有數(類別)> 1'嗎? –
請發送您迄今爲止所嘗試的內容。例如你是否已經嘗試了分組和德米特里提到的那些條款? – Tyron78