2014-12-05 1 views
0

이 사이트는 새로운 기능입니다. 데이터베이스가있는 첫 번째 웹 사이트에서 작업하고 있습니다. 나는 온라인에서 발견 된 랩 튜토리얼을 따라 Webmatrix에서 웹 사이트를 만든 다음 데이터를 표시하는 웹 페이지를 작성하기로 결정했습니다. 데이터베이스 생성이 끝났지 만 올바르게 표시하는 데 문제가 있습니다. 아래는 현재 문제가있는 코드입니다. 주어진 실험실 코드는 PLayer.firstname을 // WHERE Players.team = Teams.teamiD "로 인용하지 않지만, qoute 할 때 오류가 발생하지는 않지만 어떤 이유로 플레이어를 표시합니다 각 팀에 추가 할 수 있습니다. 따라서 다른 팀을 추가 할 경우 각 플레이어는 5 대신 4 번 나열됩니다. 기본적으로 데이터베이스에는 team 및 teamID와 관계가있는 두 개의 테이블이 있습니다. 데이터베이스에서 쿼리를 실행하여 검색하면 내가 지금이 코드가 기록되는 방법을 가정의 모든 팀 당 각 플레이어를 반복하고있어, 그래서 플레이어는 하나 개의 팀에 그를 보여줍니다. 누군가가 내가 사진 때문에 게시 할 수 없습니다 나에게데이터베이스가 잘못 표시됨 - Webmatrix

`@{   
    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) 마이크 송어를 runscore 엔젤 132 마이크 트라우트 다저스 132 헨리 라미레스 볼티모어 102 헨리 라미레스 보스턴 102 헨리 라미레스 천사 102 헨리 라미레스 다저스 102 야 시엘 푸이 그 볼티모어 4,536,913,632 10 야 시엘 푸이 그 레드 삭스 4 야 시엘 푸이 그 천사 4 야 시엘 푸이 그 다저스 4 조쉬 Hamiliton 오리올스 (75) 조쉬 Hamiliton 레드 삭스 75 조쉬 Hamiliton 천사 75 조쉬 Hamiliton 다저스 75

답변

0

귀하의 질의는 유용한 아니다. 당신은 모든 플레이어와 모든 팀을 얻으라고 말했고 그렇게했습니다. 올바른 팀과 어떻게 일치해야합니까? 당신은 그것을 말하지 않았기 때문에 모든 선수를 모든 팀과 일치시킵니다. 이것은 데카르트 조인 (Cartesian join)이라고 불리며 매우 나쁜 소식이 될 수 있습니다. 플레이어를 올바른 팀에 합류시키는 방법에 대한 섹션을 추가해야합니다.

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

그 일의 '구식'방법이다 : 당신은 두 가지 방법으로 할 수 있습니다. 정확히 같은 일을하지만, 쉽게 읽을 수있는 새로운 방법입니다 :

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

가 조인 구문을 검색합니다. 조인은 내부 또는 외부 또는 십자가 중 하나 또는 왼쪽 또는 오른쪽 또는 전체 중 하나입니다. Wikipedia article은 시작하기에 좋지 않습니다. 그런 다음 사용중인 데이터베이스 시스템에 대한 문서를 살펴보십시오 (MySQL 태그가 표시되므로 here이됩니다).

+0

더 많은 도움을 주신 데 대해 감사드립니다. 여전히 컴파일러 오류 메시지가 나타납니다 : CS1002 :; WHERE 행에 예상됩니다. 여기에 최상위 코드를 대체 한 것이 있습니다. 조인 코드를 사용하는 데 어려움이있었습니다. 플레이어 p를 이해하는 데 어려움이 있었기 때문입니다. '@ { var db = Database.Open ("Baseball"); var selectQueryString = @ "select * 플레이어에서 팀 Where Players.team = Teams.teamiD;" } ' – Hashtag

+0

Database.Open에서 또는 쿼리를 실행할 때이 오류가 발생합니까?WebMatrix –

+0

는이 오류를 받고 있어요. 너무 도움이되지 않습니다. WebMatrix로 디버깅 할 수 있습니까? – Hashtag

관련 문제