这让我疯了,我确信这很简单,但无法做到。
拥有不同年份的价值率表:
Ratevaluetable
Year Value A Value B Value C
2009 10 15 20
2010 12 18 22
2011 14 21 25
然后我有另一个人:
User Time Price
john 2010 value B
Tina 2009 Value C
Bill 2011 Value C
现在我需要的是加入2个表格,以便我将Price
列中的值替换为Ratevaluetable
中的数据。
我可以按时加入,但我不知道如何加入Value
字段?
答案 0 :(得分:1)
您当前的数据库架构无法做到这一点。通过匹配列值连接表连接;你打算在这里做的是将列值与列 name 匹配,这是不可能的。
可能的可能性是:
Table ValueTypes:
Id Description
1 Value A
2 Value B
3 Value C
Table RateValueTable:
Year ValueTypeId Value
2009 1 10
2009 2 15
2009 3 20
Table User:
User Time ValueTypeId
john 2009 2
鉴于上述架构,您可以以明显的方式将User
加入RateValueTable
。
答案 1 :(得分:0)
这是可能的,但它并不是最好的数据库设计。你必须做一个条件语句来确定要获得哪个Ratevaluetable列。
SELECT persontable.User, persontable.Time, CASE WHEN persontable.Price = 'value a' THEN `Ratevaluetable.Value A` WHEN persontable.Price = 'value b' THEN `Ratevaluetable.Value B` WHEN persontable.Price = 'value c' THEN `Ratevaluetable.Value C` AS 'price' FROM persontable, Ratevaluetable WHERE persontable.Time = Ratevaluetable.year