查询、连接、SQL server示例(Concert)和两个相关表
我不知道谁应该归还我以前写的东西,道歉。这应该返回预期的结果。查询、连接、SQL server示例(Concert)和两个相关表,sql,sql-server,Sql,Sql Server,我不知道谁应该归还我以前写的东西,道歉。这应该返回预期的结果。 ;with Cte1 AS ( select C.CID, P.Name AS PerformerName, H.Name AS HallName, H.Capacity, H.HID from @Performer P inner join @Concert C on C.PID = P.PID inner join @Hall H on H.HID = C.HID ) , Cte2 AS ( select C.
;with Cte1 AS (
select C.CID, P.Name AS PerformerName, H.Name AS HallName, H.Capacity, H.HID
from @Performer P
inner join @Concert C on C.PID = P.PID
inner join @Hall H on H.HID = C.HID
)
, Cte2 AS (
select C.CID, H.HID, COUNT(*) SellCount
from @Concert C
inner join @Hall H on H.HID = C.HID
inner join @Tickets T on T.CID = C.CID
group by C.CID, H.HID
)
select Cte1.CID, Cte1.PerformerName, Cte1.HallName, Cte2.SellCount
from Cte1 inner join Cte2 on Cte2.CID = Cte1.CID AND Cte2.HID = Cte1.HID
where Cte1.Capacity = Cte2.SellCount
这将返回预期的结果
;with Cte1 AS (
select C.CID, P.Name AS PerformerName, H.Name AS HallName, H.Capacity, H.HID
from @Performer P
inner join @Concert C on C.PID = P.PID
inner join @Hall H on H.HID = C.HID
)
, Cte2 AS (
select C.CID, H.HID, COUNT(*) SellCount
from @Concert C
inner join @Hall H on H.HID = C.HID
inner join @Tickets T on T.CID = C.CID
group by C.CID, H.HID
)
select Cte1.CID, Cte1.PerformerName, Cte1.HallName, Cte2.SellCount
from Cte1 inner join Cte2 on Cte2.CID = Cte1.CID AND Cte2.HID = Cte1.HID
where Cte1.Capacity = Cte2.SellCount
使用
TOP
:
SELECT TOP 1
PID, NAME, AGE
FROM (
SELECT
p.*, h.HID
FROM Performer p
INNER JOIN Concert c
ON c.PID = p.PID
INNER JOIN Hall h
ON h.HID = c.HID
INNER JOIN Tickets t
ON t.CID = c.CID
GROUP BY p.PID, p.NAME, p.AGE, h.HID, h.CAPACITY
HAVING COUNT(t.TID) = h.CAPACITY
) t
GROUP BY PID, NAME, AGE
ORDER BY COUNT(*) DESC
使用
TOP
:
SELECT TOP 1
PID, NAME, AGE
FROM (
SELECT
p.*, h.HID
FROM Performer p
INNER JOIN Concert c
ON c.PID = p.PID
INNER JOIN Hall h
ON h.HID = c.HID
INNER JOIN Tickets t
ON t.CID = c.CID
GROUP BY p.PID, p.NAME, p.AGE, h.HID, h.CAPACITY
HAVING COUNT(t.TID) = h.CAPACITY
) t
GROUP BY PID, NAME, AGE
ORDER BY COUNT(*) DESC
这个顶级函数对所有SQL平台通用吗?它意味着什么?这个顶级函数对所有SQL平台通用吗?它意味着什么?