嗯,问题是我必须只获得一个来自不同表的结果的bean。 所有字段都是数字。 例如
材料:IDMAT(PK),材料 座位:IDMAT(FK),IDCLASS(FK),VALUE PITCH:IDMAT(FK),IDCLASS(FK),NMR,VLR
表A:
IDMAT MATERIAL
表B:
IDMAT IDCLASS
表C包含每个IDCLASS的大约8个NMR(带有VLR),每个IDMAT还有4个IDCLASS。
现在,我正在尝试使用单个查询,左外连接表,并为每个IDMAT获取大量行,然后我正在处理结果 每种材料只能形成一个豆子。 这不是主意,因为我在使用equals方法时遇到了很多问题,而且还有很多问题。
这是我的疑问:
select
M.IDMAT,
M.MATERIAL,
S.IDMAT,
S.IDCLASS,
S.VALUE,
P.IDMAT,
P.IDCLASS,
P.NMR,
P.VLR
from MATERIALS M
left outer join SEATS S on S.IDMAT = M.IDMAT
left outer join PITCH P on P.IDMAT = M.IDMAT
order by M.IDMAT
DATA IM GETTING: http://puu.sh/8lBjX.png
数据IM预计获得: http://puu.sh/8lBky.png
(对不起链接但我无法发布图片)
问题是
如何进行单个查询,只为每个IDMAT提供一个bean,其中包含表a,b和c中的不同字段?
告诉我您是否需要更多详细信息。
答案 0 :(得分:0)
您可以使用内置的GROUP_CONCAT()
函数,该函数返回以逗号分隔的值列表。
select
M.IDMAT,
M.MATERIAL,
GROUP_CONCAT(S.IDCLASS),
GROUP_CONCAT(S.VALUE,
GROUP_CONCAT(P.NMR),
GROUP_CONCAT(P.VLR)
from MATERIALS M
left outer join SEATS S on S.IDMAT = M.IDMAT
left outer join PITCH P on P.IDMAT = M.IDMAT
group by M.IDMAT, M.MATERIAL
order by M.IDMAT
笨拙,GROUP_CONCAT()
默认返回最多1024个值的列表。