where语句中具有变形类型的MySQL视图

where语句中具有变形类型的MySQL视图,mysql,sql,join,multiple-tables,multiple-join-rows,Mysql,Sql,Join,Multiple Tables,Multiple Join Rows,我有以下表格: 应用程序 id name 1 a 2 b 3 c id name app_id 1 x 1 2 x 2 3 y 2 4 z 1 5 z 2 6 z 3 id name morph_id morph_type 1 setting 1 1 App 2 setting 1 2 Ap

我有以下表格:

应用程序

id   name
1    a
2    b
3    c
id   name   app_id
1    x      1
2    x      2
3    y      2
4    z      1
5    z      2
6    z      3
id   name        morph_id   morph_type
1    setting 1   1          App
2    setting 1   2          App
3    setting 2   1          Part
4    setting 2   2          Part
5    setting 3   3          Part
6    setting 4   3          App
7    setting 5   5          Part
零件

id   name
1    a
2    b
3    c
id   name   app_id
1    x      1
2    x      2
3    y      2
4    z      1
5    z      2
6    z      3
id   name        morph_id   morph_type
1    setting 1   1          App
2    setting 1   2          App
3    setting 2   1          Part
4    setting 2   2          Part
5    setting 3   3          Part
6    setting 4   3          App
7    setting 5   5          Part
设置

id   name
1    a
2    b
3    c
id   name   app_id
1    x      1
2    x      2
3    y      2
4    z      1
5    z      2
6    z      3
id   name        morph_id   morph_type
1    setting 1   1          App
2    setting 1   2          App
3    setting 2   1          Part
4    setting 2   2          Part
5    setting 3   3          Part
6    setting 4   3          App
7    setting 5   5          Part
这意味着应用程序1(A)有第1部分和第4部分(X/Z),设置1和2(1属于应用程序,2属于第1部分)

我想生成一个视图,显示这种情况:

设置视图

app_id   setting_type   setting_name   // app_name   part_id  part_name

1        App            setting 1      // a          null     null
1        Part           setting 2      // a          1        x

2        App            setting 1      // b          null     null
2        Part           setting 2      // b          2        x
2        Part           setting 5      // b          5        z

3        App            setting 4      // c          null     null
3        Part           setting 3      // c          3        z
然而,我不知道如何做到这一点,以及这是否可能?如果可能的话,
/
后面的两列会很好,因为查看设置属于哪个应用程序/部件(名称)会很有用

亲切问候,, 特贾布

另一个编辑将进一步解释:

SELECT a.id, s.name 
FROM settings s JOIN app a ON a.id = s.morph_id 
WHERE s.morph_type = 'App' #IMPORTANT
显示所有应用程序设置。我需要将这一点与查询结合起来:

SELECT p.app_id, s.name
FROM settings s JOIN part p ON p.id = s.morph_id
WHERE s.morph_type = 'Part' #IMPORTANT
你可以试试这个:

SELECT 
    a.`id` as `app_id`,
    b.`morph_type` as `setting_type`,
    b.`name` as `setting_name`,
    a.`name` as `app_name`,
    c.`id` as `part_id`,
    c.`name` as `part_name`
FROM `Apps` a
LEFT JOIN `Settings` b
ON a.`morph_id` = a.`id`
LEFT JOIN `Parts` c
ON c.`app_id` = a.`id`
ORDER BY a.`name`,b.`name`

您可能不需要设置表中的左连接。如果设置名称列中的值为空,请将其改为联接。

只需左键联接表格即可。应用程序和设置之间的链接是什么?@dbajtr设置属于应用程序或部分,例如“用户名”可以是应用程序设置,而“已启用”可以是部分设置。变形类型会显示它是零件还是应用程序设置。在我的应用程序中,可以创建多个应用程序(应用程序a可以由多个客户创建),这些应用程序都有自己的应用程序设置“username”,并且都有自己的a部分“is_enabled”设置。遗憾的是,这并没有给出正确的结果。我对每个部分都有一个设置,所以应用程序a有第1部分到第10部分,它们都有“is_enabled”设置。该设置在查询中仅显示一次。