2016-05-19 15 views
0

Ich habe diese TabellenSuche in der Tabelle, die mehrere Arten von Währungen

Currencies Table 
Columns : curn_I'd, curn_name, curn_rate 

Products Table 
Columns : pro_I'd, pro_price, pro_currency -- Pro_currency in Products Table come from curn_id in the Currencies table 

Auf diese Weise zum Beispiel ich habe folgenden Fall enthalten:

Product table's data as 
    Id Price Currency 
    1 100 2 
    2 200 5 
    3 300 1 
    4 400 5 
    5 500 4 

Dieser Mittelwert Ich habe viele Produkte mit unterschiedlichen Preisen und verschiedene Währungen.

Wie kann ich nach Produkten suchen, wo Preis zwischen 200 und 400 Dollar.

Ich brauche einen Weg, um alle Preise in Dollar zu konvertieren, bevor Sie die Datenbank durchsuchen und dann in allen Produkten suchen.

Antwort

0

Ich bin Antwort gegeben zu prüfen, wie SQLServer (Ich habe keine Kenntnisse über mySQL, einfach konvertieren oder denken Logik dieser Abfrage)

--create table 
declare @currency table (id int, curn_name varchar(50) , curr_rate float) 
declare @product table (id int, price float , currency int) 

--insert data into table 
insert into @currency values (1, 'Dollar', 67.22) , (2,'Euro' ,75.38) 
insert into @product values (1,100,2),(2,200,5), (3,300,1),(4,400,5), (5,500,4) 
--select query to see data 
select * from @currency 
select * from @product 

--This query gives you desired result 
select p.Id, curn_name CurrencyName, curr_rate CurrentCurrencyRate, p.price ProductPrice, p.price * c.curr_rate DollarPrice 
from @product p -- give always alies 
JOIn @currency c on p.currency = c.id 

Output Result 
Id CurrencyName CurrentCurrencyRate ProductPrice DollarPrice 
3  Dollar   67.22    300    20166 
1  Euro   75.38    100    7538 
+0

Ich denke, Ihre Antwort ist perfekt. Der erste Test war in Ordnung :) – Adham

+0

Vielen Dank liebe ... – Adham

1

Die folgende SQL-Abfrage fügt Währungen und Produkttabellen hinzu, indem sie ihre Währungen abgleicht und Produkt-ID mit Produktpreis in den entsprechenden Währungen aufführt.

SELECT 
    p.id, p.pro_price * c.curn_rate, c.curn_id 
FROM 
    products p, currencies c 
WHERE 
    p.pro_currency = c.curn_id; 
0

Die folgende Abfrage Liste alle verschiedene Produkte mit ihre Preise (unter Berücksichtigung des Währungskurs in US-Dollar angegeben):

SELECT 
    DISTINCT pro.id, pro.pro_price*cur.curn_rate AS price 
FROM 
    products AS pro, currencies AS cur 
WHERE 
    pro.pro_currency = cur.curn_id 
AND 
    pro.pro_price * cur.curn_rate >= 200 
AND 
    pro.pro_price * cur.curn_rate <=400 

Abfrage im ANSI-Format:

SELECT 
    DISTINCT pro.Id, pro.pro_price*cur.curn_rate AS price 
FROM 
    products AS pro 
INNER JOIN 
    currencies AS cur 
ON pro.pro_currency = cur.curn_Id 
WHERE 
    pro.pro_price * cur.curn_rate >= 200 
AND 
    pro.pro_price * cur.curn_rate <=400