Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C SQL命令,以获取某个元素出现在中的xml索引中时的计数_C#_Mysql_Sql_Xml - Fatal编程技术网

C# C SQL命令,以获取某个元素出现在中的xml索引中时的计数

C# C SQL命令,以获取某个元素出现在中的xml索引中时的计数,c#,mysql,sql,xml,C#,Mysql,Sql,Xml,我正在尝试使用C中的SQL命令处理一些测试数据。我的表模式包含一个时间戳和一个XML文件。我想获取XML文件中某个实例的计数。例如,我想得到每次索引包含a时的计数。我大致知道我想做什么,但我不确定这是否可行 数据库示例 Name Timestamp Metadata test1 1/1/2004 12:00:16 AM <metadata> <

我正在尝试使用C中的SQL命令处理一些测试数据。我的表模式包含一个时间戳和一个XML文件。我想获取XML文件中某个实例的计数。例如,我想得到每次索引包含a时的计数。我大致知道我想做什么,但我不确定这是否可行

数据库示例

Name      Timestamp                 Metadata
test1     1/1/2004 12:00:16 AM      <metadata>
                                       <tests>A</tests>
                                    </metadata> 
test2    1/2/2004 12:00:19 AM       <metadata>
                                       <tests>B</tests>
                                    </metadata> 

若要使用计数函数,您必须按其他字段分组,或者也要对它们使用函数

SELECT YEAR(Timestamp) * 12 + MONTH(Timestamp), Month(Timestamp) as month,
Year(Timestamp) as year, xmlCol.value('(/metadata/tests)[1]', 'varchar(50)')
 AS Value WHERE xmlCol.Value  EQUALS 'A' FROM dbo.TestTable AS Temp 
所以您可以选择它们作为临时字段,然后使用聚合函数从临时字段中选择所有字段

select min(Year),min(month) ,count(Value ) from temp 

那真的是MySQL吗?您的查询看起来更像是SQL Server对响应的存储!
string sql = "SELECT YEAR(Timestamp) * 12 + MONTH(Timestamp), Month(Timestamp) as month, Year(Timestamp) as year, xmlCol.value('(/metadata/tests)[1]', 'varchar(50)') WHERE xmlCol.Value EQUALS 'A' as Month, Year, Count FROM dbo.TestTable;"
SELECT YEAR(Timestamp) * 12 + MONTH(Timestamp), Month(Timestamp) as month,
Year(Timestamp) as year, xmlCol.value('(/metadata/tests)[1]', 'varchar(50)')
 AS Value WHERE xmlCol.Value  EQUALS 'A' FROM dbo.TestTable AS Temp 
select min(Year),min(month) ,count(Value ) from temp