2012-08-03 41 views
1

我一直无法找到一种方法来检索数据 - 我需要一种方法来遍历mysql查询中的多个外键关系。一般的表结构如下:多个表上的mysql和外键关系

Subjects (table) 
-id 
-fname 
-lname 
-etc. 

Events(table): 
-id 
-subject_id 
-procedure_id 
-date 

Procedures(table): 
-id 
-description 

这些标识符在其他表中使用,如:

Assessment1(table): 
-id 
-event_id 
-data, etc. 

Assessment2(table): 
-id 
-event_id 
-data, etc. 

我有是能够把所有的评估数据的问题对于同时具有评估1和评估2事件的主题,我可以成功地为一个评估或两个共享相同event_id的评估提取数据,在本示例中为Assessment1和Assessment 1a。但是我需要一种基于subject_id的链接方式,因为它通过Events表,所以不在评估表中。

,我已经成功地使用查询(基于关事项标识的)是:

select 
    s.first_name, 
    s.last_name, 
    s.ssn, 
    e.subject_id, 
    n.*, 
    l.Q23 
from 
    subjects s, 
    events e, 
    Assessment1 n, 
    Assessment1a l 
where 
    e.subject_id = s.id 
    and l.event_id = e.id 
    and l.Q23 = "1" 
    and n.event_id = e.id 

我怎么能修改此提取数据与不同event_ids但同样subject_ids评估?

回答

1

我该如何修改这个数据以便为不同的event_ids和相同的subject_ids进行评估?

我认为这是你需要的。

SELECT * 
FROM subjects s 
JOIN events e1 ON e1.subject_id = s.id 
JOIN events e2 ON e2.subject_id = s.id and e1.id != e2.id 
JOIN assessment1 a1 ON a1.event_id = e1.id 
JOIN assessment2 a2 ON a2.event_id = e2.id 
+0

完美!正是我需要的。 – Joseph 2012-08-03 13:25:57