Php 如何编辑此mssql查询?
下面的查询与我的部族排名php脚本关联Php 如何编辑此mssql查询?,php,sql,sql-server,Php,Sql,Sql Server,下面的查询与我的部族排名php脚本关联 SELECT TOP 100 IDNum, IDName, Nation, (SELECT SUM(LoyaltyPoint) FROM USERDATA WHERE USERDATA.Knights = KNIGHTS.IDNum AND USERDATA.Authority IN(1, 2)) as ClanLoyalty FROM KNIGHTS ORDER BY ClanLoyalty DES
SELECT TOP 100
IDNum,
IDName,
Nation,
(SELECT SUM(LoyaltyPoint)
FROM USERDATA
WHERE USERDATA.Knights = KNIGHTS.IDNum
AND USERDATA.Authority IN(1, 2)) as ClanLoyalty
FROM KNIGHTS
ORDER BY ClanLoyalty DESC
我想为MannerPoint添加第二条规则,作为忠诚度的补充。
因此,它将显示方式和忠诚度点数,并按两者排序
例如,如果氏族拥有10000个忠诚和100种方式,那么它的排名将高于20000个忠诚和50种方式
我试了几次,但失败了。如果有人愿意帮助我,我将不胜感激
编辑:我试过:
选择前100名IDNum、IDName、Nation,从USERDATA中选择SUMLoyaltyPoint,其中USERDATA.Knights=Knights.IDNum和USERDATA.Authority IN1,2为氏族忠诚,从USERDATA中选择SumAnnerPoint,其中USERDATA.Knights=Knights.IDNum和USERDATA
但它根本不显示。您可以使用外部应用将忠诚点和礼貌点相加:
select top 100
k.IDNum,
k.IDName,
k.Nation,
u.ClanLoyalty,
u.ClanManner
from KNIGHTS as k
outer apply (
select
sum(u.LoyaltyPoint) as ClanLoyalty,
sum(u.MannerPoint) as ClanManner
from USERDATA as u
where u.Knights = k.IDNum and u.Authority in (1, 2)
) as u
order by u.ClanManner desc, u.ClanLoyalty desc
或简单子查询:
select top 100
k.IDNum,
k.IDName,
k.Nation,
u.ClanLoyalty,
u.ClanManner
from KNIGHTS as k
left outer join (
select
u.Knights,
sum(u.LoyaltyPoint) as ClanLoyalty,
sum(u.MannerPoint) as ClanManner
from USERDATA as u
where u.Authority in (1, 2)
group by u.Knights
) as u on u.Knights = k.IDNum
order by u.ClanManner desc, u.ClanLoyalty desc
不知道您想如何订购记录,如果您想按ClanWay和Clan忠诚度之和订购,您可以这样做:
order by isnull(u.ClanManner, 0) + isnull(u.ClanLoyalty, 0) desc
这:
有一个语法问题,其中有一个额外的括号,应该是:
SELECT TOP 100
IDNum, IDName, Nation,
(SELECT SUM(LoyaltyPoint)
FROM USERDATA
WHERE USERDATA.Knights = KNIGHTS.IDNum
AND USERDATA.Authority IN(1, 2)) as ClanLoyalty,
(SELECT SUM(MannerPoint)
FROM USERDATA
WHERE USERDATA.Knights = KNIGHTS.IDNum
AND USERDATA.Authority IN(1, 2) ) as MannerPoint
FROM KNIGHTS
ORDER BY ClanLoyalty DESC, MannerPoint DESC`
首先,您需要指定方式点的存储位置。它们在用户数据中的位置与忠诚度点相同。在主select语句中,为方式点添加另一个返回列,并将其包含在您的订单中。例如,select[existingColumn],选择方式作为MannerPoint from。。。哪里按MannerPoint desc排序,宗族忠诚度desc选择前100名IDNum,IDName,Nation,从USERDATA中选择SUMLoyaltyPoint,其中USERDATA.Knights=Knights.IDNum和USERDATA.Authority IN1,2作为宗族忠诚度,从USERDATA中选择SumAnnerPoint,其中USERDATA.Knights=Knights.IDNum和USERDATA.Authority IN1,2作为骑士骑士团的人物点忠诚描述,人物点描述是这样的吗?这完全正确吗?是的,我想这是正确的
SELECT TOP 100
IDNum, IDName, Nation,
(SELECT SUM(LoyaltyPoint)
FROM USERDATA
WHERE USERDATA.Knights = KNIGHTS.IDNum
AND USERDATA.Authority IN(1, 2)) as ClanLoyalty,
(SELECT SUM(MannerPoint)
FROM USERDATA
WHERE USERDATA.Knights = KNIGHTS.IDNum
AND USERDATA.Authority IN(1, 2) ) as MannerPoint
FROM KNIGHTS
ORDER BY ClanLoyalty DESC, MannerPoint DESC`