当初学习SQL的时候掌握的不是很好,特别是一遇到长句就头晕,还请各路大侠帮我翻译下这两句SQL语句:SELECT G.*,[User].Username,(SELECT COUNT(*) FROM GroupUser WHERE GroupID=G.ID AND GroupID > 3) AS GroupUserCount FROM [Group] AS G INNER JOIN [User] ON G.UserID=[User].ID WHERE G.UserID=@UserID OR UserID=0
SELECT [User].*,[GroupUser].GroupID FROM [GroupUser] INNER JOIN [User] ON [User].ID=[GroupUser].UserID WHERE GroupID=@GroupID
感激不尽!!!

解决方案 »

  1.   

    --首先你要把语法结构写得比较清析
    SELECT G.*,[User].Username,(SELECT COUNT(*) FROM GroupUser WHERE GroupID=G.ID AND GroupID > 3) AS GroupUserCount 
    FROM [Group] AS G 
    INNER JOIN [User] ON G.UserID=[User].ID 
    WHERE G.UserID=@UserID OR UserID=0 
    --先是Group表和User表关联查询,条件是G.UserID=[User].ID;
    --然后select语句中包含了子查询,这个子查询的每个G.ID要与GroupUser的GroupID比较并且GroupID>3SELECT [User].*,[GroupUser].GroupID 
    FROM [GroupUser] 
    INNER JOIN [User] ON [User].ID=[GroupUser].UserID 
    WHERE GroupID=@GroupID 
    --内部连接表GroupUser和表User,条件是[User].ID=[GroupUser].UserID
      

  2.   

    第2句后来看看,也看明白了.但第一句还是有些疑问,
    "SELECT COUNT(*) FROM GroupUser WHERE GroupID=G.ID AND GroupID > 3" 
    返回的是个数值吧,这放在句中有什么意义?
      

  3.   

    以下是两个语句的查询逻辑步骤
    (5) SELECT G.*,[User].Username,(SELECT COUNT(*) FROM GroupUser WHERE GroupID=G.ID AND GroupID > 3) AS GroupUserCount 
    (1) FROM [Group] AS G 
    (3) INNER JOIN [User] 
    (2) ON G.UserID=[User].ID 
    (4) WHERE G.UserID=@UserID OR UserID=0 (5)SELECT [User].*,[GroupUser].GroupID 
    (1)FROM [GroupUser] 
    (3)INNER JOIN [User] 
    (2)ON [User].ID=[GroupUser].UserID 
    (4)WHERE GroupID=@GroupID