繁体   English   中英

SQL Server:如何将计数添加到嵌套选择

[英]SQL Server: How to add count to nested select

我有两个表,一个包含文件列表,另一个包含由fileID链接的标签列表。

目前我选择如下,到目前为止工作正常。

如果我想计算每个文件的标签并显示除了所选数据之外的其他信息,我该如何修改? 我想要做的是显示为每个文件分配了多少标签。

我的SP:

SELECT      C.fileTitle,
            C.fileID,
            (
                SELECT      T.fileTag
                FROM        Files_Tags T
                WHERE       T.fileID = C.fileID
                ORDER BY    T.fileTag
                FOR XML     PATH(''), ELEMENTS, TYPE
            ) AS tags
FROM        Files C
ORDER BY    C.fileTitle
FOR XML PATH('files'), ELEMENTS, TYPE, ROOT('root')

蒂姆,非常感谢你提供的任何帮助。

您可以添加子查询:

SELECT      C.fileTitle,
            C.fileID,
            (
                SELECT      COUNT(*)
                FROM        Files_Tags T
                WHERE       T.fileID = C.fileID
            ) AS NumTags,
            (
                SELECT      T.fileTag
                FROM        Files_Tags T
                WHERE       T.fileID = C.fileID
                ORDER BY    T.fileTag
                FOR XML     PATH(''), ELEMENTS, TYPE
            ) AS tags

您还可以在外部查询中添加join和聚合。 但是,您的查询必须使用嵌套选择进行连接,因此您也可以使用相同的计数结构。

你不能这样做吗?:

SELECT      C.fileTitle,
            C.fileID,
            (
                SELECT      T.fileTag
                FROM        Files_Tags T
                WHERE       T.fileID = C.fileID
                ORDER BY    T.fileTag
                FOR XML     PATH(''), ELEMENTS, TYPE
            ) AS tags,
            (
                SELECT
                    COUNT(*)
                FROM
                    Files_Tags T
                WHERE
                    T.fileID = C.fileID
            ) AS NumberOfTages
FROM        Files C
ORDER BY    C.fileTitle
FOR XML PATH('files'), ELEMENTS, TYPE, ROOT('root')

和计数的子查询

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM