简体   繁体   English

MySQL外部连接与数据透视表

[英]MySQL outer join with a pivot table

CREATE TABLE link (
    entityid integer,
    fileid INT (11) NULL,
    folderid INT (11) NULL
);

CREATE TABLE file (
    fileid integer,
    name varchar
);    

CREATE TABLE folder (
    folderid integer,
    name varchar
);

I want to get list of files and folder attached to an entity. 我想获取附加到实体的文件和文件夹列表。 Have tried below query however it gives null records if there is no record in either folder or file 尝试过以下查询,但是如果文件夹或文件中都没有记录,它将给出空记录

select fi.name,fo.name 
FROM link ll
LEFT OUTER JOIN file fi ON lk.FileId = fi.FileId  
LEFT OUTER JOIN folder fo ON lk.FileId = fo.FileId  
WHERE dl.entityid = 307

sample data 样本数据

link        
entityid    fileid  folderid
22          1       null
22          2       null
22          3       null
22          4       null
22          null    33


file    
fileid  name
1       file1
2       file2
3       file3
4       file4

folder  
folderid    name
33         folder33
34         folder34
35         folder35
36         folder36

Just add the entityid to the select clause: 只需将entityid添加到select子句中:

SELECT ll.entityid, fi.name, fo.name 
FROM link ll
LEFT OUTER JOIN file fi ON lk.FileId = fi.FileId  
LEFT OUTER JOIN folder fo ON lk.FileId = fo.FileId  
WHERE dl.entityid = 307;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM