【问题标题】:i want to merge three tables by joing but I am getting rows duplication我想通过加入来合并三个表,但我得到了行重复
【发布时间】:2016-04-17 16:28:40
【问题描述】:
 <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 行,但我得到更多行

【问题讨论】:

    标签: c# asp.net join gridview


    【解决方案1】:

    当存在多对一关系时,连接通常会创建多行。您必须根据您的用例处理它 - 通常使用 GROUPing 和子查询。但由于您似乎只显示其中一个表中的数据,您可能可以采取简单的方法并使用DISTINCT

    【讨论】:

      【解决方案2】:

      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"

      // 这个 SELECT QUERY WORKING FINE 并且它通过加入 3 个表来获取所需的记录

      【讨论】:

        猜你喜欢
        • 2013-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-02
        • 2021-05-29
        • 2013-03-04
        • 1970-01-01
        • 2021-12-10
        相关资源
        最近更新 更多