我是新来这个网站的。我正在开发我的第一个包含数据库的网站。我决定按照网上找到的实验教程在Webmatrix中创建一个网站,然后创建一个显示数据的网页。我完成了数据库的创建,但现在我无法正确显示它们。下面是我目前遇到问题的代码。给出的实验室代码没有引出// PLayer.firstname to //“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>`由于名誉点的原因,我不能发布图片,但网页是这样显示的:
球员的总冠军排名
球员团队得分大卫·奥尔蒂斯金丝雀134大卫·奥尔蒂斯红袜队134大卫·奥尔蒂斯天使队134麦克·奥尔蒂斯道奇队134麦克鲑鱼道奇队132麦克鲑鱼天使132麦克鲑鱼天使132麦克鲑鱼道奇队132汉利·拉米雷斯金丝雀102汉利·拉米雷斯红袜队102汉利·拉米雷斯天使队102汉利·拉米雷斯天使队102亚西尔·普伊格红袜队4亚西尔·普伊格红袜队4亚西尔·普伊格天使队4乔希·普伊格道奇队4乔什·汉密尔顿金鱼队75乔什·汉密尔顿红袜队75乔什·汉密尔顿75道奇队75
发布于 2014-12-05 23:48:07
您的查询不是有用的查询。你已经告诉它让每个球员,每个团队,它做到了。它应该如何匹配一个球员和正确的团队?你没有告诉过它,所以它将每个球员与每个球队相匹配。这被称为笛卡尔连接,这可能是非常非常坏的消息。您需要添加一个关于如何将球员加入正确团队的部分。你可以通过两种方式来完成:
select *
from Players, Teams
WHERE Players.team = Teams.teamiD这是一种“老式”的做法。更新的方法,它做完全相同的事情,但更容易阅读:
select *
from Players p
inner join Trans t on t.Id = p.teamID查找Joins的语法。连接要么是内部连接,要么是外部连接或交叉连接,然后是左连接、右连接或全连接。Wikipedia article可能不是一个很好的起点。然后查看您正在使用的任何数据库系统的文档(我看到一个MySQL标记,所以应该是here)。
https://stackoverflow.com/questions/27308770
复制相似问题