数据库显示错误 - 网络矩阵


Database displaying wrong - Webmatrix

我是这个网站的新手。我正在开发我的第一个包含数据库的网站。我决定按照在线找到的实验室教程在Webmatrix中创建一个网站,然后创建一个显示数据的网页。我完成了数据库的创建,但现在无法正确显示它们。以下是我目前遇到问题的代码。给出的实验室代码没有引用//PLayer.firstname 到//WHERE Players.team = Teams.teamiD";但是,当我进行 qoute 时,我没有收到错误,但由于某种原因,它显示每个团队的球员。因此,如果我添加另一支球队,每个球员将被列出 4 次而不是 5 次。基本上,数据库包含 2 个表,与团队和团队 ID 有关系。当我在数据库中执行查询以搜索球员时,它只显示他在一支球队中,所以我假设现在编写此代码的方式是循环每个球队的每个球员。谁能帮我

   `@{  
    var db = Database.Open("Baseball");
    var selectQueryString = "SELECT * FROM Players, Teams";
        //@"SELECT TOP 10
          // Players.firstname,  
          // Players.lastname,  
          // Teams.teamname,  
          // Players.runscore
      // FROM Players, Teams  
       // WHERE Players.team = Teams.teamiD";
    }
    <!DOCTYPE html>
    <html lang="en">
    <title>Players standings</title>
    <style>
        h1 {font‐size: 20px;}
        table, th, td {
          border: solid 1px #bbbbbb;
          border‐collapse:collapse;
          padding:5px;
        }
     </style>
  </head>
  <body>
    <h1>Players' championship ‐ standings</h1>
    <table>
        <thead>
            <tr>
                <th>Players</th>
                <th>Team</th>
                <th>runscore</th>
            </tr>
        </thead>
        <tbody>
             @foreach(var row in db.Query(selectQueryString)){
             <tr>
                  <td>@row.firstname  @row.lastname</td>
                 <td>@row.teamname</td>
                  <td>@row.runscore</td>
             </tr>
            }
        </tbody>
    </table>
   </body>
    </html>`

由于声誉点,我无法发布图片,但这是网页的显示方式:

球员冠军 - 积分榜

球员团队运行得分大卫·奥尔蒂斯 金莺 134大卫·奥尔蒂斯红袜队 134大卫·奥尔蒂斯天使 134大卫·奥尔蒂斯·道奇 134迈克·特劳特 金莺 132迈克·特劳特 红袜队 132迈克·鳟鱼天使 132迈克·特劳特·道奇队 132汉利·拉米雷斯金莺 102汉利·拉米雷斯 红袜队 102汉利·拉米雷斯天使 102汉利·拉米雷斯 道奇队 102亚西尔·普伊格金莺 4亚西尔·普伊格 红袜 4亚西尔·普伊格天使 4亚西尔·普伊格·道奇 4乔什·哈密尔顿 金莺 75乔什·汉密尔顿红袜队 75乔什·汉密尔顿天使 75乔什·汉密尔顿·道奇队 75

您的查询没有用。你告诉它要得到每个球员,每支球队,它做到了。它应该如何将球员与正确的球队相匹配?你还没有告诉它,所以它匹配每个球员到每个球队。这被称为笛卡尔连接,可能是非常非常坏的消息。您需要添加一个有关如何将玩家加入正确团队的部分。您可以通过两种方式执行此操作:

select *
from Players, Teams
WHERE Players.team = Teams.teamiD

这是"老式"的做法。较新的方法,它做完全相同的事情,但更容易阅读是:

select *
from Players p
inner join Trans t on t.Id = p.teamID

查找联接的语法。联接可以是内部联接、外部联接或交叉联接,然后是左联接、右联接或全联接。维基百科文章可能不是一个糟糕的起点。然后查看您正在使用的任何数据库系统的文档(我看到一个 MySQL 标签,所以会在这里(。