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)。しかし、サブジェクト 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 に答える