我搜索了一下,发现了很多类似的东西,但并不完全符合我的要求。MS Access(通过VB.NET) - 将链接的属性表转换为输出中的列
我有什么本质上是一堆带有属性和值的链接表。
xxBio table
xxBio_ID xxBio_LINK
1 100
2 101
xx table
xxBio_LINK xxAttr_LINK
100 1000
101 2000
xxAttr table
xxAttr_LINK xxAttrCat_1_LINK xxAttrCat_2_LINK
1000 null 550
2000 650 null
xxAttrCat_1 table
xxAttrCat_1_LINK xxAttrCat_1_Description xxAttrCat_1_Value
650 wumpus 20
xxAttrCat_2 table
xxAttrCat_2_LINK xxAttrCat_2_Description xxAttrCat_2_Value
550 frith 30
输出要求是:
xxBio_ID frith wumpus
1 30 null
2 null 20
我可以很容易地看到如何得到的结果与像attribute_name1,attribute_value1,attribute_name2,attribute_value2等栏目设置。
SELECT xxBio.ID, xxAttrCat_1.xxAttrCat_1_Description, xxAttrCat_1.xxAttrCat_1_Value, xxAttrCat_2.xxAttrCat_2_Description, xxAttrCat_2.xxAttrCat_2_Value
FROM ((
(xx INNER JOIN xxBio ON xx.xxBio_LINK = xxBio.xxBio_LINK)
INNER JOIN xxAttr ON xx.xxAttr_LINK = xxAttr.xxAttr_LINK)
LEFT JOIN xxAttrCat_1 ON xxAttr.xxAttrCat_1_LINK = xxAttrCat_1.xxAttrCat_1_LINK)
LEFT JOIN xxAttrCat_2 ON xxAttr.xxAttrCat_2_LINK = xxAttrCat_2.xxAttrCat_2_LINK
但这不是我们所需要的。我们需要属性名称作为列名。
我们如何实现这一目标?
更新质疑: 原来,我们误解了要求,所以我们不得不采取了不同的路线,并没有得到尝试的答案。我很感激帮助。
刚想过这个。上面这个可以用来创建你的表,但是随后的传递将会被要求把这些记录写到这个表中,就像你的例子一样。 – geeFlo