【问题标题】:Query returns same result three times查询 3 次返回相同的结果
【发布时间】:2013-08-30 16:18:18
【问题描述】:

我正在尝试让我的网站根据“国家/地区”标准显示所有条目。这是我的代码:

Default.aspx 的相关代码:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
                DataFile="~/App_Data/TravelJoansDB.accdb" 
                SelectCommand="SELECT Country, COUNT (*) AS N FROM [Table2] GROUP BY Country">
</asp:AccessDataSource>
     <asp:DataList ID="DataList1" DataSourceID="AccessDataSource1" runat="server">
           <ItemStyle VerticalAlign="Top" CssClass="countriesList"/>

           <ItemTemplate>
               <asp:HyperLink ID="Hyperlink1" runat="server" NavigateUrl='<%# "~/Countries.aspx?Country="+ Eval("Country")%>'>
                    <asp:Label ID="Label2" runat="server" Text='<%# Eval("Country") %>' /> (<asp:Label ID="Label1" runat="server" Text='<%# Eval("N") %>' />)
               </asp:HyperLink>
            </ItemTemplate>
     </asp:DataList>

这里是 Country.aspx 的代码:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/TravelJoansDB.accdb" 
    SelectCommand="SELECT * FROM Table2 INNER JOIN [BlogEntryItems] ON Table2.ID=BlogEntryItems.BlogID WHERE Country=@Country" >
    <SelectParameters>
        <asp:QueryStringParameter Name="Country" QueryStringField="Country" />
    </SelectParameters>
</asp:AccessDataSource>
    <asp:DataList ID="DataList1" DataSourceID="AccessDataSource1"
    runat="server" ItemStyle-CssClass="picTableStyle"
    DataKeyField="Country">
    <ItemStyle></ItemStyle>
    <ItemTemplate> 
    <br /><br />
        <table>
            <tr>        
                <td>
                    <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%#"~/Places.aspx?ID="+Eval("ID")%>'>
                    <asp:Label ID="Label2" class="picTitleStyle" runat="server" Text='<%# Eval("BlogTitle") %>' /><br /></asp:HyperLink>
                    <asp:Label ID="Label3" class="picBodyText" runat="server" Text='<%# Eval("TravelDate", "{0:MMMMMMMMM dd, yyyy}") %>' /><br /><br />
                    <asp:Label ID="Label4" class="picBodyText" runat="server" Text='<%# Eval("PicText") %>' />                    
                </td>
            </tr>
            <tr> 
                <td>
                    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#"~/Places.aspx?ID="+Eval("ID")%>'>
                    <asp:Image ID="Image1" runat="server" 
                    BorderWidth="1px" 
                    ImageUrl='<%# "PlaceImages/" + Eval("Image") %>' />
                    </asp:HyperLink>
                </td>
            </tr>
        </table>
    </ItemTemplate>
</asp:DataList>

我的问题是它在数据库中显示了相同的记录,但是许多博客文章都是关于那个国家的,即我有三篇关于意大利的博客文章和两篇关于土耳其的博客文章。当我点击意大利时,我得到了三个相同的记录(出于某种原因,它选择了第 4 号记录,这是中间记录)。如果我选择土耳其,它会显示两个相同的记录(记录号 1)。关于如何使三个和两个不同的记录显示的任何想法?

谢谢大家!

【问题讨论】:

    标签: asp.net sql visual-studio-2010


    【解决方案1】:

    我发现我所要做的就是删除 JOIN 子句。 Country.aspx 所需的一切都在表 2 中。我从网站的另一部分复制并粘贴了查询,并没有取出 JOIN 子句。

    【讨论】:

      【解决方案2】:

      在 Country.aspx 中:
      替换:

      inner JOIN
      

      与:

      left JOIN
      

      注意:您必须使用 Table2.ID 和 BlogEntryItems.BlogID 的一对一关系

      【讨论】:

      • 嘿 Samiey,你有点像我的导师,哈哈。我很欣赏你的回应。这一次我认为我根本不需要 JOIN 子句,如下所述。不过,我肯定会赞成您的回答。再次感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多