2014-01-04 4 views
0

Я делаю сайт, чтобы показать различные статистические данные о играх.Сравните две таблицы в asp.net

У меня есть две отдельные таблицы в sql-базе данных. Один называется PlayerMatch, а другой называется Match.

Две колонны, я хочу сравнить это TeamID в PlayerMatch (PlayerMatch.TeamId против WinningTeamId в матче (Match.WinningTeamId)

Чтобы показать все это, я создал таблицу, где я разместил несколько жерех :. ретрансляторы внутри Вот один из них, так как все они по существу то же самое

<asp:Repeater ID="repHighGPM" runat="server"> 
    <ItemTemplate> 
     <td><a href="Match.aspx?id=<%#Eval("Match.MatchNumber") %>"><%#Eval("Match.MatchNumber") %></a></td> 
      <td><%#Eval("Match.WinningTeamId") %></td> 
      <td><%#Eval("Name") %></td> 
      <td> 
       <img src=' <%#Eval("Image") %>' /></td> 
      <td><%#Eval("GoldPerMinute") %></td> 
     </ItemTemplate> 
</asp:Repeater> 

Теперь проблема заключается в том, что, как теперь он будет показывать только идентификатор команды, который выиграл (Match.. WinningTeamId) .Но не в том случае, если игрок был в этой команде. Поэтому по существу ему просто нужно проверить, не будет ли PlayerMatch.TeamId == Match.WinningTeamId. И если t шляпа верна, она должна написать «выигранный матч», а ложь будет «потеряна»

Любые идеи? Я знаю, что это должна быть какая-то функция if-else, но я понятия не имею, как это сделать.

+6

Лучше сделайте это в своем SQL-запросе – ariel

ответ

0

Вы можете использовать внутреннее соединение в запросе SQL: сделать источник данных для вашего Databse написать запрос после этого добавить источник данных в ретранслятор DataSourceID = «» ....

<asp:Repeater ID="repHighGPM" runat="server" DataSourceID="match"> 
    <ItemTemplate> 
     <td><a href="Match.aspx?id=<%#Eval("Match.MatchNumber") %>"><%#Eval("Match.MatchNumber") %></a></td> 
      <td><%#Eval("Match.WinningTeamId") %></td> 
      <td><%#Eval("Name") %></td> 
      <td> 
       <img src=' <%#Eval("Image") %>' /></td> 
      <td><%#Eval("GoldPerMinute") %></td> 
     </ItemTemplate> 
</asp:Repeater>  



    <asp:SqlDataSource ID="match" runat="server" ConnectionString="<%$ ConnectionStrings:database %>" SelectCommand="select m.match number, m.winningTeamID, Name ,Image from Match m inner join 
     playermatch p on p.Teamid = m.WinningTeamId"></asp:SqlDataSource> 

для получения дополнительной информации о внутреннее соединение прочитать эту статью: http://www.w3schools.com/sql/sql_join_inner.asp

0

Я решил проблему со следующим раствором:

public string MatchResult (object Result) { 
    int id = Convert.ToInt32(Request.QueryString["id"]); 
    DOTA2DataContext db = new DOTA2DataContext(); 
    var Victory = Result; 
    var TeamId = db.PlayerMatches.Where(x => x.TeamId == id); 
    var WinningTeam = db.Matches.Where(x => x.WinningTeamId == id); 
    { 
     if (TeamId == WinningTeam) 
     { 
      return "Won match"; 
     } 
     else 
     { 
      return "Lost match"; 
     } 

    } 
} 

И ретранслятор.

<asp:Repeater ID="repHighD" runat="server"> 
         <ItemTemplate> 
          <td><a href="Match.aspx?id=<%#Eval("Match.MatchNumber") %>"><%#Eval("Match.MatchNumber") %></a></td> 
          <td><%# MatchResult(Eval("Match.WinningTeamId"))%></td> 
          <td><%#Eval("Hero.Name") %></td> 
          <td> 
           <img src=' <%#Eval("Hero.Image") %>' /></td> 
          <td><%#Eval("Denies") %></td> 
         </ItemTemplate> 
        </asp:Repeater>  
Смежные вопросы