2011-12-16 21 views
2

私はordersテーブルから複数の列を表示したいと思います。その1つは、表。為替レート自体は、受注テーブルの他の2つの列に依存しています。2つの他の列と2番目のテーブルから派生した列を持つMySQLテーブルをエコーする

2のテーブルは、次のとおりです。

TABLE `orders` 
`id` 
`customer` 
`season_id` 
`order_id` 
`style_id` 
`quantity` 
'currency' 
`order_price` 

TABLE `forex` 
`id` 
`currency` 
`season_id` 
`rate` 

currency | season_id | rate 
USD  | W2012 | 1.5600 
USD  | S2012 | 1.5100 
EUR  | W2012 | 1.1510  
EUR  | S2012 | 1.1800  
CAD  | S2012 | 1.4600 
CAD  | S2012 | 1.5010  

私は通貨の種類に依存し、適切な為替レート(外国為替テーブルの率)を使用して、GBP注文価格にorder_price(注文表)に変換する必要がある(例えば、USD 、EUR - 受注テーブル内の通貨)と(例えば冬、春の季節で変わる - 受注テーブルのseason_id)

だから、ブラウザにordersテーブルのエコーは、次のようになります。

customer|season_id |style_id|quantity|currency|order_price|rate |price GBP| 
USA  |W2012  |6200 |2,550 |USD  |35,000  |1.5600 |22,436 | 
Germany |W2012  |6200 |3,000 |EUR  |45,000  |1.1510 |39,096 | 
Germany |S2012  |7220 |5,000 |EUR  |55,000  |1.1650 |47,210 | 

ステートメントは次の行に沿っています:exchange_rateテーブルからの為替レートを表示します。これはseason_idに対応し、currencyはordersテーブルにあります。

他の列と並んでGBPの注文価格を表示できるようにするには、SELECTステートメントで正しい為替レートを取得するにはどうすればよいですか?

この分野ではまだかなり緑色ですが、私はもっと学びたいと思っています。

ありがとう、 Derek。

答えて

1
SELECT o.customer, 
o.season_id, 
o.style_id, 
o.quantity, 
o.currency 
o.order_price, 
o.rate, 
round(o.order_price/f.rate) as "price GBP" <-- assuming you need a round figure 
from orders as o 
inner join forex as f 
on o.season_id = f.season_id 
and o.currency = f.currency 


、mysqlは通貨形式12,300をネイティブでサポートしておらず、間にあなたがいることを必要とする場合、それは文字列/ numbeをフォーマットするために、いくつかの余分な処理が必要になります。

+0

本当にすばらしい返信ajrealとエイリアシングのヒントをお寄せいただきありがとうございます。これは時間を節約し、長い数式を表示すると簡単です! – Derek

関連する問題