如何使用连接获得正确的值

时间:2011-10-08 16:13:54

标签: mysql join

这让我疯了,我确信这很简单,但无法做到。

拥有不同年份的价值率表:

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字段?

2 个答案:

答案 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