I am trying to update city table as City + #p + 'Number of players of Team'+ #g + 'Number of Goals' but there is a solution including IN and EXISTS operators which do not solve my problem.
UPDATE Team set City = City +'#p'+ CONVERT(nvarchar(10),(select COUNT(p1.PlayerID)
from Team as t
inner join PlayerTeam as pt on pt.TeamID= t.TeamID
inner join Player as p1 on p1.PlayerID= pt.PlayerID
where pt.Season = '13-14'
group by t.Name) )
+ '#g' +
CONVERT(nvarchar(10),(select Count(g.PlayerID)
from Team as t
inner join PlayerTeam as pt on pt.TeamID = t.TeamID
inner join Player as p1 on p1.PlayerID= pt.PlayerID
inner join Goals as g on g.PlayerID = p1.PlayerID
where pt.Season = '13-14'
group by t.Name))
Assuming you are using SQL Server I think the following would work:
UPDATE Team
SET City = t.City + city.City
FROM Team as T
INNER JOIN
(
SELECT t.TeamId, '#p' + CONVERT(nvarchar(10), COUNT(p1.PlayerId)) + '#g' + CONVERT(nvarchar(10), pg.Goals) AS City
FROM Team as t
INNER JOIN
PlayerTeam as pt on pt.TeamID= t.TeamID
INNER JOIN
Player as p1 on p1.PlayerID = pt.PlayerID
INNER JOIN
(
SELECT g.PlayerID, COUNT(g.PlayerID) AS Goals
FROM Team as t
INNER JOIN
PlayerTeam as pt on pt.TeamID = t.TeamID
INNER JOIN
Player as p1 on p1.PlayerID= pt.PlayerID
INNER JOIN
Goals as g on g.PlayerID = p1.PlayerID
WHERE pt.Season = '13-14'
GROUP BY g.PlayerID, t.Name
) pg
ON p1.PlayerID = pg.PlayerID
WHERE pt.Season = '13-14'
GROUP BY t.TeamId, p1.PlayerId, t.Name, pg.Goals
) city
ON t.TeamID = city.TeamID
Your subqueries are trying to use a result set that includes every teams counts for each row of the update, which is meaningless, hence the error. You need use the ID of the row being updated.
UPDATE Team
SET City = T.City + '#p' + CONVERT(nvarchar(10), COUNT(DISTINCT pt.PlayerId)) + '#g' + CONVERT(nvarchar(10), COUNT(pt.PlayerId))
FROM Team as T
INNER JOIN PlayerTeam as PT ON PT.TeamID = T.TeamID AND PT.Season = '13-14'
INNER JOIN Goals as G ON G.PlayerId = PT.PlayerId
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.