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”设置。该设置在查询中仅显示一次。