ここではSQL初心者です。1 つのテーブル (pgm_update) を他の 2 つのテーブル (family および family_act_visits) に外部結合しようとしています。pgm_update レコードは、family レコードまたは family_act_visits レコードに対応する場合もあれば、どちらにも対応しない場合もあります。私の結果は、3 つのケースすべてのデータを返すはずです。いくつかの悪いアーキテクチャの両方で、結合は複数の列にある必要があります。これらの個々のクエリはそれぞれ機能しますが、それらを 1 つのクエリに結合することはできませんでした。
SELECT p.last_name_wo, p.activity, p.participation, fav.*
FROM family_act_visits fav
RIGHT JOIN pgm_update p ON fav.folks_fk=p.folks_fk and fav.activity=p.activity
JOIN activities a on p.activity=a.activity
WHERE p.participation in ('c','a') and a.act_start_date>current_date()
SELECT p.last_name_wo, p.activity, p.participation, f.*
FROM family f
RIGHT JOIN pgm_update p ON f.folks_fk=p.folks_fk and f.activity=p.activity
JOIN activities a on p.activity=a.activity
WHERE p.participation in ('c','a') and a.act_start_date>current_date()
完全なクエリでの私の試みの1つは次のとおりです。
SELECT p.last_name_wo, p.activity, p.participation, fav.*
FROM family_act_visits fav, family f
RIGHT JOIN pgm_update p ON fav.folks_fk=p.folks_fk and fav.activity=p.activity
RIGHT JOIN pgm_update p2 ON f.folks_fk=p2.folks_fk and f.activity=p2.activity
JOIN activities a on p.activity=a.activity
WHERE p.participation in ('c','a') and a.act_start_date>current_date()
これにより、「'on 句' の不明な列 'fav.folks_fk'」というエラー メッセージが表示されます。