我可以使用一些帮助。这是一个现实生活中的问题,而不是家庭作业。我尝试了各种各样的外部联合和联合声明,但我只是弄得一团糟。需要联合和/或外连接的SQL查询需要
我有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
并随时提出更好的问题标题。如果我知道如何更好地表达这个问题,我可能会通过搜索自己找到答案。
这总是会一团糟。如果你坚持走下EAV路线,你需要的是一个其他的表DefaultProperties,它将Item连接到PropertyType。目前所有你能得到的是笛卡尔产品,只有在所有产品都具有所有特性的情况下才可以接受。 –
你打电话的PS也有一个预填充的default_value,如果这可能会派上用场。 –
什么是EAV?默认值只是NULL,是不是有办法将这个默认值表作为临时表在动态语句内部建立? – Zalumon