如何在sql中使用连接来获得所需的结果
我有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';
我得到了这个结果:
但我想要的logging像这样:
user={name:"sad", phone:"asdasda", files:[{filename:"dfsdfs",size:12,fileid:"sdfs"}, {filename:"dfsdfs",size:12,fileid:"sdfs"}]}
我用MySQL的node.js,所以它给我的结果数组。
请帮帮我。 提前致谢。
全部未经testing:在查询中使用group_concat()作为逗号分隔的string和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()工作[我认为它]将继续添加项目,直到你得到所有的细节需要。
性能警告:不知道这样做会有多好,可能不是很好。
在单个查询中不可能得到这样的结果,但是可以在每个单独的行中获取files
数据作为查询并将结果附加到当前行中。