我想通过joing合并三个表,但我得到行重复

时间:2016-04-17 16:28:40

标签: c# asp.net join gridview

 <asp:Panel ID = "Panel1" runat="server" ScrollBars="Auto">
    <asp:GridView ID = "GridView2" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataSourceID="SqlDataSourceDelete" DataKeyNames="IvrDataid,dayid,menudataid">
       <Columns>
            <asp:BoundField DataField = "IvrDataid" HeaderText="IvrDataid" InsertVisible="False" ReadOnly="True" SortExpression="IvrDataid" />
            <asp:BoundField DataField = "ivrName" HeaderText="ivrName" SortExpression="ivrName" />
            <asp:BoundField DataField = "loginid" HeaderText="loginid" SortExpression="loginid" />
            <asp:BoundField DataField = "countrycode" HeaderText="countrycode" SortExpression="countrycode" />
            <asp:BoundField DataField = "greetingtext" HeaderText="greetingtext" SortExpression="greetingtext" />
            <asp:BoundField DataField = "contactnumber" HeaderText="contactnumber" SortExpression="contactnumber" />
            <asp:BoundField DataField = "starttime" HeaderText="starttime" SortExpression="starttime" />
            <asp:BoundField DataField = "endtime" HeaderText="endtime" SortExpression="endtime" />
                <asp:BoundField DataField = "loginid1" HeaderText="loginid1" SortExpression="loginid1" />
            <asp:BoundField DataField = "ivrName1" HeaderText="ivrName1" SortExpression="ivrName1" />
            <asp:BoundField DataField = "dayy" HeaderText="dayy" SortExpression="dayy" />
            <asp:BoundField DataField = "ivrNumber" HeaderText="ivrNumber" SortExpression="ivrNumber" />
                <asp:BoundField DataField = "mainMenuNum" HeaderText="mainMenuNum" SortExpression="mainMenuNum" />
            <asp:BoundField DataField = "mainMenuText" HeaderText="mainMenuText" SortExpression="mainMenuText" />
        </Columns>                                                         
    </asp:GridView>
    <asp:SqlDataSource ID = "SqlDataSourceDelete" runat="server" ConnectionString="<%$ ConnectionStrings:IvrContext %>" 
        SelectCommand="  SELECT * FROM IvrDatas INNER JOIN menudatas ON 
        IvrDatas.ivrName = menudatas.ivrName AND IvrDatas.loginid = menudatas.loginid
    INNER JOIN days ON
        IvrDatas.loginid = days.loginid AND IvrDatas.ivrName = days.ivrName
                where IvrDatas.loginid = @lemail  "> 
        <SelectParameters>
        <asp:QueryStringParameter Name = "lemail" QueryStringField= "lemail" Type= "String" />
        </ SelectParameters >
    </ asp:SqlDataSource>
</asp:Panel>

我想在gridview中使用join来合并三个表,但问题是我得到了行的重复,因为我应该在加入后从3个表中获得6行但是我得到更多的行

2 个答案:

答案 0 :(得分:0)

当存在多对一关系时,联接通常会创建多行。您必须根据您的用例处理它 - 通常使用GROUPing和子查询。但由于您似乎只是从其中一个表中显示数据,因此您可以轻松地使用DISTINCT

答案 1 :(得分:0)

SelectCommand =“SELECT IvrDatas。,days。,menudatas。* FROM IvrDatas INNER JOIN days ON                                IvrDatas.loginid = days.loginid AND IvrDatas.ivrName = days.ivrName INNER JOIN menudatas ON                                IvrDatas.loginid = menudatas.loginid AND IvrDatas.ivrName = menudatas.ivrName其中IvrDatas.loginid = @lemail“

//这个选择QUERY工作很精细,它通过加入3个表来获取重新获得的记录