查询连接四个表导致一行

-1 mariadb join mariadb-10.3

我有这两个查询,它们从四个表中提取数据:

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)

我想我应该尝试派生表,但一直在尝试无济于事。

ype*_*eᵀᴹ 5

您需要连接来自两个查询的表,然后用于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)