我有2个表orc_users和orc_files。 现在我想从orc_files表中获取相关用户的文件 我试过这个查询: -
use orc
select *
from orc_users as T1
INNER JOIN orc_files AS t2 on T1.id = t2.userid
where T1.email='sdfsdf';
我得到了这个结果: -
但我希望记录如下: -
user={name:"sad",
phone:"asdasda",
files:[{filename:"dfsdfs",size:12,fileid:"sdfs"},
{filename:"dfsdfs",size:12,fileid:"sdfs"}]}
我正在使用带有MySQL的node.js,所以它给了我数组的结果。
请帮帮我。 提前谢谢。
答案 0 :(得分:1)
所有未经测试的: 在查询中使用group_concat()作为逗号分隔的字符串和group by,如下所示:
select
t1.id
/* specify the fields here */
, GROUP_CONCAT(T2.Filename
ORDER BY T2.Filename ASC SEPARATOR ', ') as filenames
from orc_users as T1
INNER JOIN orc_files AS t2 on T1.id = t2.userid
where T1.email='sdfsdf'
group by
t1.id
/* specify the fields here too */
;
还尝试使用CONCAT()来获取文件名和大小,例如
, GROUP_CONCAT( CONCAT(T2.Filename,' size:',T2.size)
ORDER BY T2.Filename ASC SEPARATOR ', ') as filenames
如果group_concat()中的concat()工作[我认为它会]继续添加项目,直到您获得所需的所有详细信息。
性能警告:不知道这会有多好,可能不会很好。
答案 1 :(得分:0)
在单个查询中无法获得该结果,但您可以在每个单独的行中获取files
个数据作为查询,并将结果附加到当前行。