2015-02-04 5 views
0

Student, Applications, Company, Internships이라는 4 개의 테이블이 있습니다. 기본 키는 s_id, a_id, c_id, i_id입니다. 더 많은 인턴십에는 by_c_id라는 컬럼이 있고 어플리케이션에는 by_s_id, for_i_id가 있습니다.여러 테이블에서 데이터 추출

그렇다면 i_id = "something"인 인턴쉽 프로그램을 어떻게 보여줄 수 있습니까?

사용자는이 달성 될 것인가

Student's Details 
Answer in Application. 

을 볼 수 C_ID으로 로그인.

나는이 질문으로 인해 제로 의원에게 다가 갈지도 모른다. 그러나 그 모든 것은 혼란 스럽다.

Select Student's Detail from Student where by_s_id=s_id, select Answers from Applications, where for_i_id=i_id. 

편집

예상 출력은 회사가 신청자의 정보와 자신의 질문에 대한 자신의 반응을 볼 수있는 온라인 구직 플랫폼과 유사하다.

여기에서 응답은 Application에 저장되며, 신청자의 세부 정보는 Student에 있습니다.

또 다른 편집

이 내가 그것을 달성하는 방법이다. 나는 올바른 방법이 아니라는 것을 안다. 그러나 나는 이전 학기에 수업에 참여하고보기를 놓쳤다.

$query= "SELECT * FROM APPLICATIONS 
     WHERE 
     for_i_id='$i_id'"; 
$query1= mysqli_query($dbhandle, $query); 

$count= mysqli_num_rows($query1); 
if(!$query1 || $count==0) 
{ 
echo "No Applications to be displayed"; 
} 
else 
{ 
while($row=mysqli_fetch_assoc($query1)) 
{ 
echo $row['by_s_id']; 

$query2 ="SELECT `Question1`,`Question2` FROM INTERNSHIPS 
      WHERE 
      i_id='".$row['for_i_id']."' "; 

$query3= mysqli_query($dbhandle, $query2); 

$s_id=$row['by_s_id']; 

$query4= "SELECT * FROM STUDENT 
      WHERE 
      id='$s_id'"; 

$query5= mysqli_query($dbhandle,$query4); 
if(!$query3) 
{ 
echo 'MySQL Error: ' . mysqli_error(); 
     exit; 
} 
+0

샘플 날짜와 예상 출력을 추가 할 수 있습니까? – Jens

+0

@Jens 편집 됨 – CAO

답변

0

가정 : 하나의 신청서가 하나의 인턴십에 속하고 하나의 신청서가 한 학생에게 해당됩니다.

Select S.*, A.* From Students S, Applications A, Internships I Where S.s_id = I.s_id And A.i_id = I.i_id And I.i_id = 'something' 

없이 당신이 적절하게 네 개의 테이블에서 primary keysforeign keys의 존재를 확인해야 말할 수 있습니다. one-to-many relationships이 있으면 쿼리가 달라질 수 있습니다. 나는 당신이 내 대답에 사용한 키워드를 읽고, 무슨 일이 일어나고 있는지 이해할 것을 제안한다. 어떤 외래 키가 필요하지 않을한다이 경우

SELECT Student.FirstName, Student.FamilyName, Applications.Answers FROM Applications 
LEFT JOIN Student ON Applications.by_s_id=Student.id 
LEFT JOIN Internships ON Applications.for_i_id=Internships.i_id 
WHERE Internships.i_id='something'; 

:

+0

정확히 내가 필요한 것. 그리고 한 회사의 한 인턴십에 한 명의 학생 만 한 명의 신청서가 발송됩니다. 나는 DB를 쉽게 디자인 할 수 있었지만,이 마지막 것은 나를 얻었다. – CAO

+0

답변 중 하나를 수락 된 답변으로 표시하여 문제가 해결 된 것으로 표시되도록 요청할 수 있습니까? –

1

는 여기에 또 다른 LEFT이 응용 프로그램 테이블에 학생 및 인턴쉽 테이블을 조인 가입 사용 방법입니다.

+0

당신은 나를 올바른 방향으로 가리켰습니다. 감사합니다. – CAO

관련 문제