プロジェクトより:私は2つのテーブル、Products
とCategories
を持っているクラシックASPのVBScript/SQL Server 2012のSQL Serverの選択数> 1つの
。
は私がMORE THAN ONE製品を持っているONLYカテゴリを返しますSQLクエリを構築したいです。
2つのテーブル間の共通キーは、Category_id
の列です(Products
テーブルとCategories
テーブルに存在します)。
プロジェクトより:私は2つのテーブル、Products
とCategories
を持っているクラシックASPのVBScript/SQL Server 2012のSQL Serverの選択数> 1つの
。
は私がMORE THAN ONE製品を持っているONLYカテゴリを返しますSQLクエリを構築したいです。
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 Nguyen あなたのコードは完璧です! しかし私は最初の質問で非常に重要なことを忘れました: "Products"テーブルでは、 "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 |
+------------+--------------+
使用簡易次のデモとして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