1

我一直无法找到一种检索数据的方法——我需要一种方法来遍历 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 进行链接的方法,该主题不在评估表中,因为它通过事件表。

我成功使用的查询(基于 event_id)是:

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_id 但相同 subject_id 的评估数据?

4

1 回答 1

1

如何修改它以提取具有不同 event_id 但相同 subject_id 的评估数据?

我认为这就是你所需要的。

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
于 2012-08-03T12:21:52.707 回答