База данных отображается неправильно - Webmatrix

Я новичок на этом сайте. Я работаю над своим первым веб-сайтом, который содержит базу данных. Я решил следовать лабораторному руководству, найденному в Интернете, чтобы создать веб-сайт в Webmatrix, а затем создать веб-страницу, которая отображает данные. Я закончил создание своей базы данных, но теперь у меня возникают проблемы с их правильным отображением. Ниже приведен код, с которым у меня сейчас проблемы. Приведенный лабораторный код не заключает в кавычки // PLayer.firstname в // WHERE Players.team = Teams.teamiD"; однако, когда я его заключаю в кавычки, я не получаю сообщения об ошибке, но по какой-то причине он отображает игроков быть в каждой команде.Поэтому, если бы я добавил еще одну команду, каждый игрок был бы указан 4 раза вместо 5. В основном база данных содержит 2 таблицы со связью с командой и идентификатором команды.Когда я выполняю запрос в базе данных для поиска игрок, он показывает его только в одной команде, поэтому я предполагаю, что этот код написан прямо сейчас, он зацикливает каждого игрока на каждую команду Может кто-нибудь, пожалуйста, помогите мне

   `@{  
    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


person Hashtag    schedule 05.12.2014    source источник


Ответы (1)


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

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

Это "старомодный" способ. Более новый способ, который делает то же самое, но его легче читать:

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

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

person simon at rcl    schedule 05.12.2014
comment
Большое спасибо за помощь, которая имеет больше смысла. Я все еще получаю сообщение об ошибке компилятора: CS1002: ; ожидается в строке WHERE. Вот чем я заменил верхний код, я не использовал код присоединения, потому что мне было трудно понять его и Player p . '@{ var db = Database.Open(Baseball); var selectQueryString = @select * FROM Players, Teams WHERE Players.team = Teams.teamiD; }' - person Hashtag; 05.12.2014
comment
Вы получаете эту ошибку в Database.Open или при выполнении запроса? - person simon at rcl; 05.12.2014
comment
Я получаю эту ошибку при запуске приложения в моем веб-браузере из команды запуска в WebMatrix - person Hashtag; 05.12.2014
comment
OK. Не слишком полезно. Можете ли вы отладить его с помощью WebMatrix? - person simon at rcl; 05.12.2014
comment
Искала этот вариант и нашла! Похоже, это была ошибка с запятой, большое спасибо! @simon-at-rcl - person Hashtag; 05.12.2014