2016-05-08 2 views
1

У меня есть таблица, которая имеет уникальный Match_ID для каждого ввода данных. Тем не менее, когда я хочу вызвать пользовательский запрос выбора, который собирает имя команды из таблицы Team, я получаю повторяющиеся строки с двумя Match_ID s, которые являются одинаковыми. Я хочу отображать строки однозначно в GridView с колонками Home team, Away team, Home team score, и Game date. Я не хочу отображать идентификатор команды в своих столбцах, а вместо них имена их команд. Однако я также хочу убедиться, что смогу обновить этот GridView, поскольку использование AS помешало мне сделать это в прошлом.Удалите повторяющиеся строки из пользовательского запроса выбора SQL

Вот что я использую до сих пор с изображением, показывающим, что возвращает запрос. Я использую SQL-источник данных.

SELECT  MatchStatistics.Match_ID, MatchStatistics.Home_team_ID, MatchStatistics.Away_team_ID, MatchStatistics.Home_team_score, MatchStatistics.Away_team_score, MatchStatistics.Game_date, 
         Team.Team_name 
FROM   MatchStatistics INNER JOIN 
         Team ON MatchStatistics.Home_team_ID = Team.Team_ID OR MatchStatistics.Away_team_ID = Team.Team_ID 
WHERE  EXISTS 
          (SELECT DISTINCT Match_ID 
           FROM   MatchStatistics AS MatchStatistics_1) 
<asp:GridView ID="EnterMatchGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="Match_ID" DataSourceID="SqlDataSource4" OnRowUpdating="EnterMatchGridView_RowUpdating" OnRowDeleting="EnterMatchGridView_RowDeleting"> 
     <Columns> 
      <asp:BoundField DataField="Match_ID" HeaderText="Match_ID" SortExpression="Match_ID" InsertVisible="False" ReadOnly="True" /> 
      <asp:TemplateField HeaderText="Home Team" SortExpression="Home_Team_Name"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Home_Team_Name") %>'></asp:TextBox> 

       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Home_Team_Name") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Away Team" SortExpression="Away_Team_Name"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Away_Team_Name") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("Away_Team_Name") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Home Team Score" SortExpression="Home_team_score"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Home_team_score") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label4" runat="server" Text='<%# Bind("Home_team_score") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Away Team Score" SortExpression="Away_team_score"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Away_team_score") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label5" runat="server" Text='<%# Bind("Away_team_score") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Date" SortExpression="Game_date"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Game_date", "{0:dd-MM-yyyy}") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label3" runat="server" Text='<%# Bind("Game_date", "{0:dd-MM-yyyy}") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Edit/Delete"> 
       <ItemTemplate> 
        <asp:LinkButton ID="BtnEdit" runat="server" CausesValidation="false" CommandName="Edit" Text="Edit" /> 
        <span onclick="return confirm ('Are you Sure?')"> 
         <asp:LinkButton ID="BtnDelete" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" /> 
        </span> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:Button ID="BtnUpdate" runat="server" CausesValidation="true" CommandName="Update" ConflictDetection="OverwriteChanges" Text="Update" ValidationGroup="EnterMatchGridView" /> 
        <asp:Button ID="BtnCancel" runat="server" CausesValidation="false" CommandName="Cancel" ConflictDetection="OverwriteChanges" Text="Cancel" /> 
       </EditItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

enter image description here

enter image description here

Короче говоря, как мне сделать этот запрос возвращал уникальный уникальный MATCH_ID для каждой строки?

+1

Просто примечание: Ваша часть 'WHERE EXISTS' ничего не делает. Он возвращает FALSE (0), если таблица пуста. В противном случае он всегда будет перенаправлять TRUE (1). –

ответ

2

Не будет ли ...

SELECT s.Match_ID 
    , s.Home_team_ID 
    , s.Away_team_ID 
    , s.Home_team_score 
    , s.Away_team_score 
    , s.Game_date 
    , h.Team_name home_team 
    , a.Team_name away_team 
    FROM MatchStatistics s 
    JOIN Team h 
    ON h.Team_ID = s.Home_team_ID 
    JOIN Team a 
    ON a.Team_ID = s.Away_team_ID 

???

+0

А гениальное спасибо! Я не знал, что вы можете это сделать –

+0

Только проблема теперь обновляет GridView. Я сделал DropDownLists как на родительских, так и на удаленных командных столбцах, которые отображают имена их команд, значения, установленные для каждого идентификатора. Однако независимо, запрос на обновление, заданный источником данных, говорит: «Параметрированный запрос» (@Match_ID int, @ Home_team_ID int, @ Away_team_ID int, @ Home_team_sc 'ожидает параметр «@Match_ID», который не был отправлен. « I имеют параметризованный Match_ID, поэтому я не уверен, почему я получаю эту ошибку –

+0

Я не знаю ASP, поэтому я сомневаюсь, что смогу помочь, но я уверен, что запрос не является проблемой. – Strawberry

Смежные вопросы