私はこの問題を抱えています:
2 つのテーブル:
tbl_suppliers
id* (int),
name (string),
activity1 (int),
activity2 (int),
activity3 (int)
tbl_activity
id* (int),
description (string)
2 つのテーブルの間には一種の「1 対多」の関係があります。
tbl_activity
(1) --> tbl_suppliers
(多) ; これは、すべてのサプライヤーがすべての活動に対して 3 つの ID をすべて満たすか、または活動をまったく行わない (ID なし) ことができることを意味します。
tbl_suppliers
列name
, activity1
, activity2
,のレコードを表示する必要がありますactivity3
。
SQL では、次のクエリで問題ありません。
SELECT s.id, s.name, a1.description activitystring1,
a2.description activitystring2, a3.description activitystring3
FROM tbl_suppliers s
LEFT JOIN tbl_activity a1 ON (s.activity1=a1.id)
LEFT JOIN tbl_activity a2 ON (s.activity2=a2.id)
LEFT JOIN tbl_activity a3 ON (s.activity3=a3.id)
HQL では同じことはできません。アクティビティ フィールドを「1 対多」に 3 回マップする必要がありますか?