如何用c#连接2个MSSQL查询?

时间:2013-12-18 09:40:09

标签: sql-server-2005 c#-2.0

我有以下问题 - 我需要从唯一的部门名称和属于它的每个部门列表文章下构建类别列表。

我写了2个mssql查询: 1)选择唯一的部门名称(表由id和字符串名称组成):

select distinct (fs.ob_no), fs.c_name as fs_c_name from et_filials_suggest fs order by fs.ob_no

得到这样的东西:

ob_no     fs_c_name
244400  IT Department
244401    HR Department

2)比我选择文章:

select              s.ob_no as s_ob_no,
                s.c_name as s_c_name,
                s.e_fio,
                s.e_text_header,
                s.e_datetime,
                s.e_link_filial,
                fs.c_name
                from et_suggest s
                inner join et_filials_suggest fs on fs.ob_no = s.e_link_filial
                where s.c_visible=1 
                AND s.e_lean_flag=1 
                AND fs.c_visible=1

得到这样的东西:

s.ob_no |   s.c_name       | s.e_fio | s.e_text_header | s.e_datetime            |s.e_link_filial | fs.c_name
458713  |   Article_sys_name | Me      |Aricle_vis_name  | 2013-11-12 00:00:00.000 |44410           | IT deparment

这就是问题,我不明白如何制作清单,例如:

IT部门

  • 第1条
  • 第2条

人力资源部

  • 第3条

....

我在这里获得部门清单:

<%#DataBinder.Eval(Container.DataItem," fs_c_name")%>

但我如何将其与文章联系起来?在我看来,我应该在第一个查询中设置变量,但我怎样才能在以后使用它?

以下是我所制作的代码的完整示例 - 文章限制为1,它显示在每个部门下方,但没有与之相关:

<mso:Query ID="Query1" runat="server" CommandType="Text" CommandText="select distinct (fs.ob_no), fs.c_name as fs_c_name from et_filials_suggest fs order by fs.ob_no">
            <ItemTemplate>
                <b><%#DataBinder.Eval(Container.DataItem, "fs_c_name")%></b><br />
                <mso:Query ID="Query1" runat="server" CommandType="Text" CommandText="
                select top (1)
                s.ob_no as s_ob_no,
                s.c_name as s_c_name,
                s.e_fio,
                s.e_text_header,
                s.e_datetime,
                s.e_link_filial,
                fs.c_name
                from et_suggest s
                inner join et_filials_suggest fs on fs.ob_no = s.e_link_filial
                where s.c_visible=1 
                AND s.e_lean_flag=1 
                AND fs.c_visible=1">
                <ItemTemplate>
                <a href="/magazine.aspx?CatalogId=458560&d_no=<%#DataBinder.Eval( Container.DataItem, "s_ob_no") %>"><%#DataBinder.Eval(Container.DataItem, "s_c_name")%></a><br />
                </ItemTemplate>
                </mso:Query>
            </ItemTemplate>
    </mso:Query>

提前感谢您提供任何帮助。

更新

我有一个想法 - 如果我将第二个查询内部联接更改为左联接并添加where子句我可以获得部门文章列表:

select 
                s.ob_no as s_ob_no,
                s.c_name as s_c_name,
                s.e_fio,
                s.e_text_header,
                s.e_datetime,
                s.e_link_filial,
                fs.c_name
                from et_suggest s
                left join et_filials_suggest fs on fs.ob_no = s.e_link_filial
                where s.c_visible=1 
                AND s.e_lean_flag=1 
                AND fs.c_visible=1
                AND s.e_link_filial=244411

但我仍然不知道如何更改号码:

AND s.e_link_filial=244411

来自第一个查询的变量:

select distinct (fs.ob_no), fs.c_name as fs_c_name from et_filials_suggest fs order by fs.ob_no

1 个答案:

答案 0 :(得分:0)

删除行

AND s.e_link_filial=244411

将返回所有记录

您应该添加以下行

ORDER BY s.e_link_filial=244411

顺便说一句,在网页开发中,在使用这种类型的信息绑定网格视图时,我使用了不同的方法。 如果您有兴趣知道,请告诉我,我会更新我的答案。