查询返回相同的结果三次

时间:2013-08-27 19:07:01

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

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

有关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>

以下是Countries.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)。关于如何制作三个和两个不同记录的任何想法都显示出来了?

谢谢你们!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

在Countries.aspx中:
替换:

inner JOIN

with:

left JOIN

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