简体   繁体   English

SQL将一个表中的两个字段彼此连接

[英]SQL Joining two fields in one table to one in another

Here is my SQL: 这是我的SQL:

SELECT        
    Users.[First Name], Users.[User ID], Users.Login, 
    Users.Surname, Users.Password, Users.[Account Question], 
    Users.[Account Answer], Users.[Region Access], Users.[Account Access], 
    Users.owningsite, Users.Currentsitesetting, Users.createdby, 
    Users.createddate, Users.lastmodby, Users.lastmoddate, Users.active, 
    Sites.Sitename    
FROM
    Users 
INNER JOIN 
    Sites ON Users.owningsite = Sites.SiteID AND Users.Currentsitesetting = Sites.SiteID    
WHERE
    (Users.owningsite = 1)

Now I need two bound fields containing ID Numbers (Owningsite & currentsitesetting) to connect site name and provide sitename's depending on the ID Numbers for both for a user form so instead instead of display 1,2 it displays Site A, Site B. 现在,我需要两个包含ID号的绑定字段(Owningsite和currentsitesetting)来连接站点名称,并根据用户表单的ID号提供站点名称,这两种形式都用于显示用户站点,而不是显示1,2,而是显示站点A,站点B。

Is the SQL wrong or am I missing something in the ASPX markup? SQL是错误的还是在ASPX标记中缺少某些内容?

<asp:BoundField DataField="First_Name" HeaderText="First_Name" 
    SortExpression="First_Name" />
<asp:BoundField DataField="Surname" HeaderText="Surname" 
    SortExpression="Surname" />
<asp:BoundField DataField="Login" HeaderText="Login" SortExpression="Login" />
<asp:BoundField DataField="Password" HeaderText="Password" 
    SortExpression="Password" />
<asp:BoundField DataField="Account_Question" HeaderText="Account_Question" 
    SortExpression="Account_Question" />
<asp:BoundField DataField="Account_Answer" HeaderText="Account_Answer" 
    SortExpression="Account_Answer" />
<asp:BoundField DataField="Region_Access" HeaderText="Region_Access" 
    SortExpression="Region_Access" />
<asp:BoundField DataField="Account_Access" HeaderText="Account_Access" 
    SortExpression="Account_Access" />
<asp:BoundField DataField="sitename" HeaderText="owningsite" 
    SortExpression="sitename" />
<asp:BoundField DataField="sitename" HeaderText="Currentsitesetting" 
    SortExpression="sitename" />
<asp:CheckBoxField DataField="active" HeaderText="active" 
    SortExpression="active" />

if I got it correctly, you need to display a string Site A or Site B based on OwningSite and CurrentSiteSetting. 如果我没有得到它,你需要显示基于OwningSite和CurrentSiteSetting串站点A站点B。 You need a template column (TemplateField) in order to write down the logic which transforms the real column value to a template value. 您需要模板列(TemplateField)才能记下将实际列值转换为模板值的逻辑。 Something like the following asp.net script (using C#): 类似于以下asp.net脚本(使用C#):

<asp:TemplateField HeaderText="Site Name (owning)">
    <ItemTemplate>
        <%# Eval("owningsite") == 1 ? "Site A" : "Site B" %>
    </ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Site Name (setting)">
    <ItemTemplate>
        <%# Eval("Currentsitesetting") == 1 ? "Site A" : "Site B" %>
    </ItemTemplate>
</asp:TemplateField>

try to replace the following part of your asp.net with the previous sample. 尝试用前面的示例替换asp.net的以下部分。

<asp:BoundField DataField="sitename" HeaderText="owningsite" 
  SortExpression="sitename" />
<asp:BoundField DataField="sitename" HeaderText="Currentsitesetting" 
  SortExpression="sitename" />

hope it helps 希望能帮助到你

Ok This works to get the two fields connected however its showing weird results, ie getting multiple records for the same person for each sitename in the table 好的,这可以使两个字段连接起来,但是显示出奇怪的结果,即为表中的每个站点名称获取同一个人的多个记录

SELECT        
Users.[First Name], Users.[User ID], Users.Login, Users.Surname, Users.Password, 
Users.[Account Question], Users.[Account Answer], Users.[Region Access], 
Users.[Account Access], Users.owningsite, Users.Currentsitesetting, Users.createdby, 
Users.createddate, Users.lastmodby, Users.lastmoddate, Users.active, 
Sites.Sitename AS owningsitename, Sites_1.Sitename AS Currentsitename

FROM             Users 

LEFT OUTER JOIN
                     Sites ON Users.owningsite = Sites.SiteID 

LEFT OUTER JOIN
                     Sites AS Sites_1 ON Users.Currentsitesetting = Sites.SiteID

WHERE        (Users.owningsite = 1)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM