按问题分组..从表中检索数据

时间:2011-09-16 05:46:03

标签: c# asp.net sql-server-2008 gridview

我是Sql的初学者,我正在尝试SQL Group By语句,我的要求如下。

Table Structure  <br> 
USerID  int <br> 
BrowserName nvarchar(200) <br> 
BrowserVersion nvarchar <br> 
LoggedOntime  Time 

这是我的要求。我想根据用户ID选择所有详细信息以及它应该按浏览器名称分组。我试着回复它的后续查询。但是如何在visual studio中使用它来在Gridview中显示为每个浏览器的组。当用户单击gridview中的组时,它应显示该浏览器的所有详细信息。

例如。如果我单击FireFox然后它应该显示Firfox组的详细信息,包含特定用户ID的所有版本和LoggedOnTime详细信息

select  
  BrowserName, 
  LoggedOnTime, 
  BrowserVersion
from 
  BrowserSession 
  inner join Users on UserId = Users.UsersId
where 
  UserId=21 
group by 
  BrowserName, 
  LoggedOnTime,
  BrowserVersion 
order by 
  BrowserName, 
  LoggedOnTime

2 个答案:

答案 0 :(得分:1)

如果查询为static,您可以这样做,否则您可以在查询中使用parameters

        SqlConnection con = new SqlConnection(connectionString);

        string sqlQuery = "select  BrowserName, LoggedOnTime, BrowserVersion"
                            + " from BrowserSession inner join Users on UserId=Users.UsersId"
                            + " where UserId=21 group by BrowserName, LoggedOnTime,BrowserVersion order by BrowserName, LoggedOnTime";

        SqlCommand cmd = new SqlCommand(sqlQuery, con);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();

        adapter.Fill(ds, "TableName");

        GridView1.DataSource = ds;
        GridView1.DataBind();

使用参数:

        string sqlQuery = "select  BrowserName, LoggedOnTime, BrowserVersion"
                            + " from BrowserSession inner join Users on UserId=Users.UsersId"
                            + " where UserId=@userID group by BrowserName, LoggedOnTime,BrowserVersion order by BrowserName, LoggedOnTime";

        SqlCommand cmd = new SqlCommand(sqlQuery, con);
        cmd.Parameters.AddWithValue("@userID", 21);

答案 1 :(得分:0)

您可以为每个组创建数据网格并插入父网格。将子数据网格绑定到特定数据组。

以下是几个链接。

  1. Step by step我无法访问现场演示。这看起来像你想要的。
  2. 4 Guys from Rolla
  3. 报告asp.net 1.1 CodeProject
  4. 中的布局类型