【发布时间】:2012-08-22 17:16:35
【问题描述】:
我有这个问题:
两张表:
tbl_suppliers
id* (int),
name (string),
activity1 (int),
activity2 (int),
activity3 (int)
tbl_activity
id* (int),
description (string)
两个表之间存在一种“一对多”的关系:
tbl_activity (一个) --> tbl_suppliers (许多) ;这意味着每个供应商都可以为每个活动填写所有三个 id,甚至可以不填写任何活动(没有 id)。
我需要用列name、activity1、activity2、activity3 显示tbl_suppliers 的记录。
在 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 中做同样的事情。我应该映射 3 次“一对多”活动字段吗?
【问题讨论】:
-
您必须在 tbl_suppliers 中有 tbl_activity_id。对吗?
-
@RAS,他确实有,但连接列的名称是 activity1、activity2 和 activity3。