我有一个带有SiteUserID,FirstName,LastName和SiteUserParentID的表SiteUsers。
为每个SiteUser分配一个引用SiteUserID的SiteUserParentID。
我想显示与SiteUser全名的关系以及他们被分配到的全名。
这样做的最佳方式是什么?
SiteUserID, FirstName, LastName ParentID
1 , John , Doe , 1
2 , Sallie , Smith , 1
我正在寻找输出:
ChildName , ParentName
John Doe , John Doe
Sallie Smith, John Doe
我当然希望将其转储到asp.net转发器中并输出为:
John Doe is assigned to John Doe
Sallie Smith is assigned to John Doe
目前,我在看:
John Doe is assigned to 1
Sallie Smith is assigned to 1
使用以下内容:
static public List<SiteUser> GetSiteUserListFullName()
{
List<SiteUser> thelist = new List<SiteUser>();
string sql = "select SiteUserID, SiteUserFirstName + ' ' + SiteUserLastName as SiteUserName, SiteUserParentID from SiteUsers where SiteUserActive = 1";
SqlDataReader dr = DBUtil.FillDataReader(sql);
while (dr.Read())
{
SiteUser obj = new SiteUser();
obj.siteUserID = Convert.ToInt32(dr["siteUserID"].ToString());
obj.siteUserFirstName = Convert.ToString(dr["siteUserName"].ToString());
obj.siteUserParentID = Convert.ToInt32(dr["siteUserParentID"].ToString());
thelist.Add(obj);
}
return thelist;
}
这在我的代码背后:
repeaterTeams.DataSource = SiteUser.GetSiteUserListFullName();
repeaterTeams.DataBind();
这是在前端:
<asp:Repeater ID="repeaterTeams" runat="server">
<HeaderTemplate>
<table class="horTable">
<tr class="tableHeader">
<td class="first">Assignment</td>
<td class="last">Edit</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="tableRow">
<td><%#DataBinder.Eval(Container.DataItem, "SiteUserFirstName")%> is assigned to <%#DataBinder.Eval(Container.DataItem, "SiteUserParentID")%></td>
<td class="last"><a href="selected-team.aspx?id=<%#DataBinder.Eval(Container.DataItem, "SiteUserID")%>">Select</a></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
感谢任何帮助。
谢谢!
答案 0 :(得分:7)
您需要自己加入表格。
示例:
select
child.SiteUserFirstName + ' ' + child.SiteUserLastName as ChildName,
parent.SiteUserFirstName + ' ' + parent.SiteUserLastName as ParentName
from
SiteUsers as child
inner join
SiteUsers as parent on child.SiteUserParentID = parent.SiteuserID
where
child.SiteUserActive = 1
答案 1 :(得分:2)
您需要使用self join。
答案 2 :(得分:0)
您可以将表连接到自身,因此sql将是:
select
a.SiteUserID,
a.SiteUserFirstName + ' ' + a.SiteUserLastName as SiteUserName,
b.SiteUserFirstName + ' ' + b.SiteUserLastName as ParentName,
SiteUserParentID
from SiteUsers a
JOIN SiteUsers b
on a.ParentID = b.SiteUserID
where SiteUserActive = 1