我有这两个查询,它们从四个表中提取数据:
select files.id, files.name, dirs.dir
from files
inner join dirs on dirs.id = files.idDir
where files.id = 45
select label
from labels
inner join labels_files on labels_files.idLabel = labels.id
where labels_files.idFile = 45
Run Code Online (Sandbox Code Playgroud)
第一个查询返回 1 行。第二个查询返回 1 个或多个 row/s
我的目标是在结果集中获得一个查询和一行。说:
--------------------------------------------------
45 | test.txt | /home | label1, label2, labeln |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想我应该尝试派生表,但一直在尝试无济于事。
您需要连接来自两个查询的表,然后用于GROUP_CONCAT()
连接标签:
(查询假定files (id)
是UNIQUE
或 PRIMARY KEY`)
select
files.id, files.name, dirs.dir,
group_concat( labels.label
order by labels.label
separator ', '
) as label_list
from
files
inner join dirs
on dirs.id = files.idDir
inner join labels_files
on labels_files.idFile = files.id
inner join labels
on labels_files.idLabel = labels.id
where
files.id = 45
group by
files.id,
dirs.dir ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
66 次 |
最近记录: |