我是这个网站的新手。我在我的第一个包含数据库的网站上工作。我决定按照在线发现的实验教程在Webmatrix中创建一个网站,然后创建一个显示数据的网页。我完成了数据库的创建,但现在我无法正确显示它们。以下是我目前遇到问题的代码。给出的实验室代码没有引用// PLayer.firstname // // WHERE Players.team = Teams.teamiD“;但是当我做出来时我没有得到错误,但由于某种原因它显示了玩家在每个团队中。所以如果我要添加另一个团队,每个玩家将被列出4次而不是5次。 基本上,数据库包含2个表,其中包含与team和teamID的关系。当我在数据库中执行查询以搜索播放器时,它只在一个团队中显示他,所以我假设现在编写此代码的方式是为每个团队循环每个玩家。任何人都可以帮助我
`@{
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>`
由于信誉点,我无法发布图片,但这就是网页的显示方式:
球员总冠军 - 积分榜
球员队员奔跑 David Ortiz Orioles 134 大卫奥尔蒂斯红袜队134 David Ortiz Angels 134 David Ortiz道奇队134 迈克特劳特金莺队132 迈克特劳特红袜队132 迈克特劳特天使132 迈克特劳特道奇队132 Hanley Ramirez Orioles 102 Hanley Ramirez Red Sox 102 汉利拉米雷斯天使102 Hanley Ramirez道奇队102 Yasiel Puig金莺队4 Yasiel Puig Red Sox 4 Yasiel Puig Angels 4 Yasiel Puig Dodgers 4 Josh Hamiliton Orioles 75 Josh Hamiliton Red Sox 75 Josh Hamiliton Angels 75 Josh Hamiliton Dodgers 75
答案 0 :(得分:0)
您的查询不是很有用。你告诉它要让每个球员和每个球队都做到这一点。如何将球员与正确的球队相匹配?你还没有告诉它,所以它匹配每个球员和每个球队。这被称为笛卡尔联盟,可能是非常非常坏的消息。您需要添加一个关于如何将球员加入正确球队的部分。你可以用两种方式做到:
select *
from Players, Teams
WHERE Players.team = Teams.teamiD
这是老式的&#39;这样做的方式。更新的方式,它完全相同,但更容易阅读:
select *
from Players p
inner join Trans t on t.Id = p.teamID
查找Joins的语法。连接是内部或外部或交叉,然后左或右或完整。 Wikipedia article可能不是一个糟糕的起点。然后查看您使用的任何数据库系统的文档(我看到一个MySQL标记,因此这将是here)。