2015-02-04 3 views
0

У меня есть 4 таблицы с именем, Student, Applications, Company, Internships. Их первичными ключами являются s_id, a_id, c_id, i_id. Дальнейшие стажировки имеют столбцы с именем by_c_id, а приложения - by_s_id, for_i_id.Извлечение данных из нескольких таблиц

Итак, как можно показать Приложения для стажировки с i_id = "something".

Пользователь вошел в систему с c_id должны увидеть

Student's Details 
Answer in Application. 

Как это будет достигнуто.

Я знаю, что я мог бы спуститься до нулевой репутации из-за этого вопроса, но все это так запутывает.

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

Редактировать

Ожидаемый результат похож на онлайн-поиска работы платформ, где компания может увидеть детали заявителя и его ответ на свои вопросы.

Здесь ответы хранятся в приложении, данные заявителя находятся в Студенте.

Другой Редактировать

Это, как я достиг. Я знаю, что это не так, но я пропустил занятия и просмотр в моем предыдущем семестре.

$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 keys и foreign keys в четырех таблицах соответствующим образом. Запрос может быть другим, если есть one-to-many relationships. Я предлагаю вам прочитать ключевые слова, которые я использовал в своем ответе, чтобы понять, что происходит.

+0

Точно, что мне нужно. И одно приложение отправляется только одним студентом для одной конкретной стажировки в одной компании. Мне удалось легко сконструировать БД, но это последнее заняло меня. – CAO

+0

Могу я просить вас отметить один из ответов в качестве принятого ответа, чтобы вопрос был отмечен как разрешенный? –

1

Вот другой подход, использующий LEFT JOIN, чтобы присоединиться к студентам и таблицы Стажировки в таблице Приложения:

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

Вы указали мне в правильном направлении. Спасибо и добро пожаловать в SO. – CAO

Смежные вопросы