我一直无法找到检索数据的方法 - 我需要一种在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进行链接,而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_ids但具有相同subject_id的评估提取数据?
答案 0 :(得分:1)
如何修改此数据以为具有不同event_ids但具有相同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