T SQL: 子 select 查询中的内连接?
T SQL: Inner join in sub select query?
我是 WPF 开发人员,不是 sql dba...正在尝试加入子 select。
我有两个表:tbArticles 和 tbRegions。 TbArticles 包含一个 regionCode 列,这对 tbRegions 也是通用的。我正在尝试按地区和国家统计所有文章的数量:
这是我正在寻找的结果:
我已经设法通过内部连接按地区获取国家/地区:
select distinct r.longName, a.Country
from ises.tbarticles a
INNER JOIN ref.tbRegions r
On a.RegionCode = r.regionCode
order by longName
但是如何将连接作为子 select 获得我想要的结果?我试过这种方法,但显然是不对的。
select (select distinct r.longName from ises.tbarticles a
INNER JOIN ref.tbRegions r
on r.regionCode = a.RegionCode) as 'Region', country, COUNT(*) as 'Total Articles' from ises.tbarticles a, ref.tbRegions r
group by country
order by Region
试试这个:
select r.longName, a.Country, count(*)
from ises.tbarticles a
INNER JOIN ref.tbRegions r
On a.RegionCode = r.regionCode
group by r.longName, a.Country
order by longName
使用需要使用GROUP BY Clause然后计数
Select r.longName, a.Country, Count(a.*) as ArticleCount
From ises.tbarticles a
INNER JOIN ref.tbRegions r On a.RegionCode = r.regionCode
Group By r.longName, a.Country
试试这个:
DECLARE @TbArticles TABLE(regionCode INT, Coutry NVARCHAR(MAX), Body NVARCHAR(MAX))
DECLARE @TbRegions TABLE(regionCode INT, Name NVARCHAR(MAX))
INSERT INTO @TbArticles VALUES
(10, N'Australia', 'blah'),
(10, N'Fiji', 'blah'),
(12, N'USA', 'blah'),
(15, N'Belgium', 'blah')
INSERT INTO @TbRegions VALUES
(10, N'Australia'),
(12, N'North America'),
(15, N'Western Europe')
SELECT r.Name, a.Coutry, COUNT(*) AS ArticleCount FROM @TbArticles a
JOIN @TbRegions r ON r.regionCode = a.regionCode
GROUP BY r.regionCode, r.Name, a.Coutry
输出:
Name Coutry ArticleCount
Australia Australia 1
Australia Fiji 1
North America USA 1
Western Europe Belgium 1
我是 WPF 开发人员,不是 sql dba...正在尝试加入子 select。 我有两个表:tbArticles 和 tbRegions。 TbArticles 包含一个 regionCode 列,这对 tbRegions 也是通用的。我正在尝试按地区和国家统计所有文章的数量:
这是我正在寻找的结果:
我已经设法通过内部连接按地区获取国家/地区:
select distinct r.longName, a.Country
from ises.tbarticles a
INNER JOIN ref.tbRegions r
On a.RegionCode = r.regionCode
order by longName
但是如何将连接作为子 select 获得我想要的结果?我试过这种方法,但显然是不对的。
select (select distinct r.longName from ises.tbarticles a
INNER JOIN ref.tbRegions r
on r.regionCode = a.RegionCode) as 'Region', country, COUNT(*) as 'Total Articles' from ises.tbarticles a, ref.tbRegions r
group by country
order by Region
试试这个:
select r.longName, a.Country, count(*)
from ises.tbarticles a
INNER JOIN ref.tbRegions r
On a.RegionCode = r.regionCode
group by r.longName, a.Country
order by longName
使用需要使用GROUP BY Clause然后计数
Select r.longName, a.Country, Count(a.*) as ArticleCount
From ises.tbarticles a
INNER JOIN ref.tbRegions r On a.RegionCode = r.regionCode
Group By r.longName, a.Country
试试这个:
DECLARE @TbArticles TABLE(regionCode INT, Coutry NVARCHAR(MAX), Body NVARCHAR(MAX))
DECLARE @TbRegions TABLE(regionCode INT, Name NVARCHAR(MAX))
INSERT INTO @TbArticles VALUES
(10, N'Australia', 'blah'),
(10, N'Fiji', 'blah'),
(12, N'USA', 'blah'),
(15, N'Belgium', 'blah')
INSERT INTO @TbRegions VALUES
(10, N'Australia'),
(12, N'North America'),
(15, N'Western Europe')
SELECT r.Name, a.Coutry, COUNT(*) AS ArticleCount FROM @TbArticles a
JOIN @TbRegions r ON r.regionCode = a.regionCode
GROUP BY r.regionCode, r.Name, a.Coutry
输出:
Name Coutry ArticleCount
Australia Australia 1
Australia Fiji 1
North America USA 1
Western Europe Belgium 1