将几个表中的多个数据放入一个bean中

时间:2014-04-24 14:09:03

标签: mysql

嗯,问题是我必须只获得一个来自不同表的结果的bean。 所有字段都是数字。 例如

材料:IDMAT(PK),材料 座位:IDMAT(FK),IDCLA​​SS(FK),VALUE PITCH:IDMAT(FK),IDCLA​​SS(FK),NMR,VLR

表A:

IDMAT    MATERIAL

表B:

IDMAT    IDCLASS

表C包含每个IDCLA​​SS的大约8个NMR(带有VLR),每个IDMAT还有4个IDCLA​​SS。

现在,我正在尝试使用单个查询,左外连接表,并为每个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中的不同字段?

告诉我您是否需要更多详细信息。

1 个答案:

答案 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个值的列表。