我可以使用一些帮助。这是一个现实生活中的问题,而不是家庭作业。我尝试了各种外连接和联合语句,但我只是弄得一团糟。
我有3张桌子:
Table "item":
id | name
---------
1 | 'Item 1'
2 | 'Item 2'
Table "property_type":
id | name
------------------
105 | 'Property A'
106 | 'Property B'
107 | 'Property C'
Table "property" (fk stands for foreign key):
id | fk_item | fk_property_type | value
---------------------------------------------------------------------
1044 | 1 | 106 | 'some value for prop B of item 1'
1045 | 2 | 107 | 'some value for prop C of item 2'
现在我需要一个语句,为给定的项目ID生成属性表,显示每个属性类型的一行,即使并未为该项目设置所有属性,例如如果我对第1项感兴趣,输出应为:
item_name | property_type_name | property_value
------------------------------------------------------------------
'Item 1' | 'Property A' | NULL
'Item 1' | 'Property B' | 'some value for prop B of item 1'
'Item 1' | 'Property C' | NULL
随意提出更好的问题标题。如果我知道如何更好地标题这个问题,我可能会通过搜索自己找到答案。
答案 0 :(得分:2)
SELECT
i . name AS item_name,
pt . name AS property_type_name,
p . value AS property_value
FROM
item AS i
CROSS JOIN
property_type AS pt
LEFT JOIN
property AS p
ON p.fk_item = i.id
AND p.fk_property_type = pt.id
WHERE
i.id = 1 ; -- given item ID