2015-06-30 3 views
1

У меня есть 3 таблицы: события, студенты и parent_student_relation.Получить данные третьей таблицы в mysql

события

id | class_id | title 
---------------------- 
1 | 16  | ABC 
2 | 17  | JKL 
3 | 18  | XYZ 

студентов

id | class_id | name 
---------------------- 
5 | 18  | StudentName1 
6 | 17  | StudentName2 
7 | 16  | StudentName3 

parent_student_relation

student_id | parent_id 
---------------------- 
     4 | 10 
     5 | 10 
     6 | 11 
     7 | 11 

Теперь я хочу получить данные от events, где я передаю parent_id = 10, затем получите следующий вывод.

Выход

id | class_id | title 
---------------------- 
3 | 18  | XYZ 

И я прохожу parent_id = 11 затем получить следующий вывод.

Выход

id | class_id | title 
---------------------- 
1 | 16  | ABC 
2 | 17  | JKL 

Я попытался с помощью следующего кода:

$q_student = "SELECT student_id FROM parent_student_relation WHERE parent_id = " . $parent_id; 

$q_class = "SELECT class_id FROM students WHERE id IN($q_student) GROUP BY class_id"; 

$q = "SELECT * FROM events WHERE class_id IN($q_class)"; 

Так что я могу получить идеальный выход в $query = mysql_query($q);

Но я хочу, чтобы все только один присоединиться к запросу. Так как это можно сделать? Или это возможно или нет?

ответ

0

попробовать этот

$query="SELECT * 
    FROM parent_student_relation AS a 
    JOIN students AS b 
    ON a.student_id = b.id 
    JOIN events AS c 
    ON b.class_id = c.class_id 
    WHERE a.parent_id = " . $parent_id; 
+0

получить дубликаты данных .. – kupendra

+0

использование group_by FIELD – Droid

+0

Где использовать ??? – kupendra

0

Используйте это:

$query="select e.id,e.class_id,e.title,s.id from event e 
      inner join student s on e.class_id=s.class_id 
      inner join parent_student_relation p on s.id=p.student_id 
      where p.parent_id=$parent_id"; 
Смежные вопросы