我有以下问题 - 我需要从唯一的部门名称和属于它的每个部门列表文章下构建类别列表。
我写了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部门
人力资源部
....
我在这里获得部门清单:
<%#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
答案 0 :(得分:0)
删除行
AND s.e_link_filial=244411
将返回所有记录
您应该添加以下行
ORDER BY s.e_link_filial=244411
顺便说一句,在网页开发中,在使用这种类型的信息绑定网格视图时,我使用了不同的方法。 如果您有兴趣知道,请告诉我,我会更新我的答案。