oraclesql查询到xml
我有以下问题oraclesql查询到xml,xml,oracle,Xml,Oracle,我有以下问题 SELECT DISTINCT P.PLAYERID, P.FIRSTNAME, P.LASTNAME, P.POSITION,PT.POINTS, PT.MINUTES, CALC_TENDEX(P.PLAYERID, PT.TEAMID, 2009) TENDEX, T.DIVISION, PT.TEAMID, T.TEAMNAME FROM PLAYERS P JOIN PLAYERS_TEAMS PT ON P.PLAYERID = PT.PLAYERID JOIN TEA
SELECT DISTINCT P.PLAYERID, P.FIRSTNAME, P.LASTNAME, P.POSITION,PT.POINTS, PT.MINUTES, CALC_TENDEX(P.PLAYERID, PT.TEAMID, 2009) TENDEX, T.DIVISION, PT.TEAMID, T.TEAMNAME
FROM PLAYERS P
JOIN PLAYERS_TEAMS PT ON P.PLAYERID = PT.PLAYERID
JOIN TEAMS T ON PT.TEAMID=T.TEAMID
WHERE PT.YEAR=2009 AND T.DIVISION='East'
ORDER BY TENDEX DESC
FETCH FIRST 12 ROWS ONLY;
我想将此查询输出为xml,自定义格式如下:
<nba dataset="topplayers">
<division ID="East">
<player></player>
.
.
.
<player></player>
</nba>
我尝试过使用SQL/XML,但无论我尝试什么,都不会返回我想要的答案。是否有一些简单的方法可以直接将其转换为xml
EDIT:SQL/XML我已经尝试过了,并对其进行了各种修改
SELECT DISTINCT XMLELEMENT("nba",
XMLAGG (
XMLELEMENT("division",
XMLATTRIBUTES(T.DIVISION AS "ID"),
(SELECT DISTINCT XMLAGG(
XMLELEMENT("player",
XMLFOREST(
P.PLAYERID AS "playerid",
P.FIRSTNAME AS "firstname",
P.LASTNAME AS "lastname",
P.POSITION AS "position",
PT.POINTS AS "points",
PT.MINUTES AS "minutes",
CALC_TENDEX(PT.PLAYERID, PT.TEAMID, 2009) AS "tindex",
T.DIVISION AS "division",
PT.TEAMID AS "teamid",
T.TEAMNAME AS "teamname"
)
)
)
FROM PLAYERS P
JOIN PLAYERS_TEAMS PT ON P.PLAYERID = PT.PLAYERID
JOIN TEAMS T ON PT.TEAMID=T.TEAMID
WHERE PT.YEAR=2009 AND T.DIVISION='East' AND ROWNUM < 12
)
)
)
) AS "nba"
FROM TEAMS T
WHERE T.DIVISION = 'East';
编辑2:当前查询返回:
<nba>
<division ID="East">
<player>
<playerid>belinma01</playerid>
<firstname>Marco</firstname>
<lastname>Belinelli</lastname>
<position>G</position>
<points>469</points>
<minutes>1121</minutes>
<tindex>,25245316681534344335414808206958073149</tindex>
<division>East</division>
<teamid>TOR</teamid>
<teamname>Toronto Raptors</teamname>
</player>
<!-- The same player 11 more times -->
</division>
</nba>
我想回报的是:
<nba>
<division ID="East">
<player>
<playerid></playerid>
<firstname></firstname>
<lastname></lastname>
<position></position>
<points></points>
<minutes></minutes>
<tindex></tindex>
<division></division>
<teamid></teamid>
<teamname></teamname>
</player>
<!-- Top 12 in the East division -->
</division>
<division id="West>
<!-- Top 12 in the west division -->
</division>
</nba>
我希望这有帮助
您正在为团队重新定义子查询中的T。
而不是
JOIN PLAYERS_TEAMS PT ON P.PLAYERID = PT.PLAYERID
JOIN TEAMS T ON PT.TEAMID=T.TEAMID
WHERE PT.YEAR=2009 AND T.DIVISION='East'
您需要将子查询与上的外部/顶级查询关联起来
必须参加T的小组:
JOIN PLAYERS_TEAMS PT ON P.PLAYERID = PT.PLAYERID
WHERE PT.YEAR=2009 AND T.DIVISION='East' AND PT.TEAMID = T.TEAMID
像那样使用ROWNUM是行不通的;改用A来获得前12名
您可能不需要在这里进行区分
向我们展示您的SQL/XML查询tried@imhotap编辑问题以添加它。你说它…不返回我想要的答案。它是否返回不正确的数据、无数据、格式不正确的数据或其他信息?一些关于输入数据的外观、您期望查询返回的内容以及您得到的内容的示例会有所帮助。“谢谢,”博比贾维斯·埃迪特再次说道。不幸的是,我已经试过了。结果保持不变。