2011-09-23 8 views
0

죄송합니다. ID
SQL 오류 2 테이블을 결합 할 때

날짜
• YearID
• 년도

이벤트
• 이벤트 ID
• •

events_year
• 이벤트 ID
• YearID
: 나는 세 개의 테이블을 가지고 이벤트 이름
• 이벤트 유형

내가 이렇게 같은 세 개의 테이블에서 레코드를 dispay하려는 :

EventName을 - 년 : 마라톤 - 2008

내가 "회원"라는 테이블에 연결된 어떤이 포함 된 ID 번호 필드 (회원-ID)

는 그래서 난

나는 세 개의 테이블을 조인하고 결과를 제한 할 필요가 (세션에서 사용자 이름 인) 회원 아이디 = $ 유엔에 결과를 제한 할 수 있습니다

$query = "SELECT * FROM members JOIN events_year ON members.id = events_year.id "; 
      "SELECT * FROM Event JOIN events_year ON Event.EventID = events_year.EventID WHERE username = '$un'"; 
      "SELECT * FROM Date JOIN events_year ON Date.YearID = events_year.YearID WHERE username = '$un'"; 


$results = mysql_query($query) 
    or die(mysql_error()); 

    while ($row = mysql_fetch_array($results)) { 
    echo $row['Year']; 
    echo " - "; 
    echo $row['Event']; 
    echo "<br>"; 
    }  
+2

테이블 정의 란 무엇입니까? –

+2

직접 디버깅하기 위해 무엇을 했습니까? '$ row'의 내용을 인쇄/로깅 해 보았습니까? – Mat

+2

그런 세 가지 선택 쿼리를 실행할 수 없습니다 – Flukey

답변

4

의주의 사항에 거의 자기 설명이다 : 특정 ID 번호 기록에

다음은 코드의 내 부분이다. 결과 집합에는 'Year''EventName' 필드가 없습니다. 당신이 당신의 테이블 구조를 제공하지 않았던 이유를 말하기는 어렵거나 불가능합니다. 그러나 'Year'date 표의 필드이고 'EventName'event 표의 필드입니다 - 이 필드가 나타나지 않도록 members에서만 선택하십시오.

왜 SQL 문은 3 개가 있지만 하나만 변수에 할당되는지 이해할 수 없습니다. 다른 두 개는 그냥 서서 아무 것도하지 않습니다. 이것을 설명하고 당신이 얻으려는 것, 당신의 테이블 구조가 어떻게 생겼는지 그리고 당신의 예상 결과가 무엇인지 등에 관한 질문에 더 많은 정보를 넣어주세요.

내가 실제로하고 싶었던 것은 일종의 쿼리 였으므로 the documentation을보고 어떻게 작동하는지 확인하십시오.

는 마지막으로 쿼리는 다음과 같이해야한다고 생각 : '년'분야는 쿼리 출력에 존재

SELECT 
    * 
FROM 
    members 
INNER JOIN 
    events_year ON members.id = events_year.id 
INNER JOIN 
    Event ON Event.EventID = events_year.EventID 
INNER JOIN 
    ´Date´ ON ´Date´.YearID = events_year.YearID 
WHERE 
    members.username = '$un' 
+0

:-) 우리에게 '날짜를 사용자 테이블의 정의를 적어주세요 모호 '이것이 MySQL에서 예약어라고 생각했습니다. – Flukey

+0

편집 : 오, 당신이 할 수있는 것처럼 보입니다. TIL. 그래도 좋은 습관으로 추천하지는 않습니다. – Flukey

0

가 있습니까? 나는 의심하지 않는다.

"SELECT * FROM members JOIN events_year ON members.id = events_year.id "; 

아닌 다른 사람 :

+0

또한 제목에 테이블을 결합한다고 말합니다. 당신은 아마도 그것에 조금 연구를 수행해야 때문에 '참여'당신이 생각하는 무엇을하지 않을 수 있습니다. SQL 문의 'join'키워드가 중요합니다. –

0

문자열 $의 쿼리는 텍스트의 첫 줄을 사용하고 있습니다.

쿼리 자체가 Year 또는 EventName이라는 필드를 반환하지 않습니다.

반환되는 내용을 찾으려면 var_dump ($ row)를 수행하십시오.

관련 문제