Неправильное отображение базы данных — Webmatrix

Я новичок в этом сайте. Я работаю над своим первым сайтом, который содержит базу данных. Я решил следовать лабораторному руководству, найденному в Интернете, чтобы создать веб-сайт в 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>`

Я не могу опубликовать изображение из-за баллов репутации, но вот как отображается веб-страница:

Чемпионат игроков — турнирная таблица

Игроки Команда Runscore
Дэвид Ортис Ориолс 134
Дэвид Ортиз Ред Сокс 134
Дэвид Ортиз Ангелы 134
Дэвид Ортис Доджерс 134
Майк Форель Иволги 132
Майк Форель Ред Сокс 132
Майк Форель Ангелы 132
Майк Форель Доджерс 132
Хэнли Рамирес Ориолс 102
Хэнли Рамирес Ред Сокс 102
Хэнли Рамирес Ангелы 102
Хэнли Рамирес Доджерс 102
Ясиэль Пуиг Ориолс 4
Ясиэль Пуиг Ред Сокс 4
Ясиэль Пуиг Ангелы 4
Ясиэль Пуиг Доджерс 4
Джош Хамилитон Ориолс 75
Джош Хамилитон Ред Сокс 75
Джош Хамилитон Ангелы 75
Джош Хамилитон Доджерс 75

0

Решение

Ваш запрос не является полезным. Вы сказали это, чтобы получить каждого игрока, каждую команду, и это сделано. Как это должно соответствовать игроку с правильной командой? Вы этого не сказали, так что это соответствует каждому игроку каждой команде. Это называется декартовым соединением, и это может быть очень и очень плохой новостью. Вам нужно добавить раздел о том, как присоединить игроков к нужной команде. Вы можете сделать это двумя способами:

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

Это «старомодный» способ сделать это. Более новый способ, который делает то же самое, но может быть проще для чтения:

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

Посмотрите синтаксис для Joins. Соединения бывают либо внутренние, либо внешние, либо поперечные, а затем либо левые, либо правые, либо полные. Статья в википедии вероятно, неплохое место для начала. Затем посмотрите документы для любой системы баз данных, которую вы используете (я вижу тег MySQL, так что это будет Вот).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]