我正在尝试在三个关系表上创建SELECT
,如下所示:
table_materials
-> material_id
- material_name
table_props
-> prop_id
- prop_name
table_materials_props
- row_id
-> material_id
-> prop_id
- prop_value
在我的页面上,我想得到像这样的结果,但我对查询有一些问题:
material prop A prop B prop C prop D prop E
wood 350 NULL NULL 84 16
iron NULL 17 NULL NULL 201
copper 548 285 99 NULL NULL
所以查询应该返回类似的内容:
material prop_name prop_value
wood prop A 350
wood prop B NULL
wood prop C NULL
wood prop D 84
wood prop E 16
// and go on with others rows
我想使用类似的东西:
SELECT *
FROM table_materials AS m
INNER JOIN table_materials_props AS mp
ON m.material_id = mp.material_id
INNER JOIN table_materials_props AS p
ON mp.prop_id = p.prop_id
ORDER BY p.prop_name
问题是查询没有返回NULL
值,并且我需要prop
所有materials
订单,无论道具值是NULL or not
< / p>
我希望这个例子很清楚!
答案 0 :(得分:0)
交叉连接(或没有条件的内连接)所有选项,然后将它们连接到关联实体表。即使组合表中不存在组合,左连接也将保留prop / materials。
未测试:
SELECT *
FROM table_materials AS m
INNER JOIN table_props as p
LEFT JOIN table_material_props AS mp
ON p.prop_id = mp.prop_id
AND
m.material_id = mp.material_id;
ORDER BY p.prop_name