SQL Query,需要帮助理解它

时间:2014-02-12 16:12:44

标签: c# sql sql-server

我对编程很新,我可以用C ++,PHP,Java编程,但我还没有遇到过SQL查询。我目前正在攻读计算机学位。

我是自雇人士,并为公司编写了一个程序。最近,程序员再也不能照顾我的程序了,所以当我正在学习编程并有一个公平的想法时,我想我会自己接管这个项目。

程序是用C#编写的,它使用SQL来获取数据。正如我所说,我还没有在学习中遇到SQL,所以我是一个完全新手。

我试过学习SQL查询,但我无法理解它。有人可以解释一下查询的每个部分是做什么的,这样我就可以了解它并希望能够理解它。

SELECT top 3 tracks.trackid AS id,
             TrackTitle,
             ArtistName,
             row_number() over (
                                ORDER BY Tracks.TrackPlayed DESC) AS rank,
             categorytitle,
             categorytitle AS title,
             CategoryImagePath
FROM Tracks
JOIN artists ON tracks.artistid = artists.artistid
JOIN x_categories_tracks ON x_categories_tracks.trackid = tracks.trackid
JOIN Categories ON categories.categoryid = x_categories_tracks.categoryid
WHERE trackactive = 'true'
  AND categories.categoryid = @optsId 
ORDER BY trackplayed DESC

如果需要任何其他信息,请告诉我。

提前致谢。

2 个答案:

答案 0 :(得分:2)

查询的作用:

返回给定Sing / Track Active的TOP 3最常播放曲目的歌曲/曲目信息,这些曲目处于Category状态(作为{{1}中的参数传入} property。

目的查询的每个部分都用于。

从结果集中获取前3行

opts.id

从结果集中选择要进一步处理的字段
Select top 3

按照tracks.trackid as id, TrackTitle,ArtistName,...降序排列的TrackPlayed值对选择条件中符合条件的记录进行分组,因此最常播放的记录在结果集中排在第一位。
desc,“

从结果集中选择一些您希望进一步处理的字段 row_number() over (order by Tracks.TrackPlayed desc) as rank

SQL连接条件以链接各种相关的表。
+"categorytitle,categorytitle as title, CategoryImagePath from Tracks "
+ "join artists on tracks.artistid = artists.artistid " +
"join x_categories_tracks on x_categories_tracks.trackid = tracks.trackid " +

用于过滤记录的

"join Categories on categories.categoryid = x_categories_tracks.categoryid " +子句。在这里,我们只选择活动的曲目,这些曲目属于WHERE中存储的类别(作为参数传入?)
opts.id

最后,按照播放时间的降序排序返回的前3个记录(即大多数播放时间为1)。
"where trackactive = 'true' and categories.categoryid = " + opts.id + "

答案 1 :(得分:0)

在理解上面提供的SQL代码之前,您应该尝试了解每个SQL命令的用途。在阅读此SQL语句之前,您需要了解的一些主题:

SELECT, TOP, Alias Table, Ranking Functions, ORDER BY, JOINS, WHERE. 

如果你学习了那些命令,我​​相信你会很容易理解这些代码。