2015-06-30 27 views
1

我有3個表格:events,students和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領域 – 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";