需要使用union和/或外连接的SQL查询

时间:2013-10-05 17:51:53

标签: sql union outer-join

我可以使用一些帮助。这是一个现实生活中的问题,而不是家庭作业。我尝试了各种外连接和联合语句,但我只是弄得一团糟。

我有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

随意提出更好的问题标题。如果我知道如何更好地标题这个问题,我可能会通过搜索自己找到答案。

1 个答案:

答案 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
相关问题