Łączenie wyników w jednej tabeli

0

Witam.
Mam 2 tabele z kursami walut, których struktura przedstawia się następująco:

WALUTA (łącznie 5 walut, które są stałe)
id
nazwa // np. dolar amerykański
kod // np. USD

WARTOSC
id
waluta_id
kurs // np. 2.76
data // np. 2011-04-10

Wykonuję zapytanie sql, które pobiera z bazy danych ostatnie 5 wyników za pomocą LEFT JOIN i wyświetla tabelę z kursami:

SELECT * FROM waluta JOIN LEFT value ON valuta.id=wartosc.waluta_id ORDER BY wartosc.data DESC LIMIT 0,5

Następnie za pomocą skryptu php pobieram dane ze strony z kursami walut.
W zmiennej $waluty mam wówczas tablicę postaci:

 Array ( [USD] => Array ( [name] => dolar amerykański [code] => USD [amount] => 2.80 [date] => 2011-05-27 ) [EUR] => Array ( [name] => euro [code] => EUR [amount] => 3.98 [date] => 2011-05-27 ) [CHF] => Array ( [name] => frank szwajcarski [code] => CHF [amount] => 3.26 [date] => 2011-05-27 ) [GBP] => Array ( [name] => funt szterling [code] => GBP [amount] => 4.59 [date] => 2011-05-27 ) [RUB] => Array ( [name] => rubel rosyjski [code] => RUB [amount] => 0.10 [date] => 2011-05-27 ) ) 

Teraz chciałbym wyświetlić w nowej tabeli ostatnich 5 kursów walut oraz 5 nowych koło siebie (tych niedawno pobranych, które znajdują się w tablicy), dodatkowo policzyć zmianę procentową między starym kursem, a nowym dla każdej waluty (zmiana_procentowa = 100%-stary_kurs100%/nowy_kurs, gdy stary_kurs > nowy_kurs oraz zmiana_procentowa = stary_kurs100%/nowy_kurs, gdy stary_kurs < nowy_kurs), tak aby widok tabeli był mniej więcej taki:

Lp. | Nazwa | Kod | Kurs | Data | Nowy kurs | Aktualna data | Zmiana procentowa
1 | dolar amerykański | USD | 2.76 | 2011-04-10 | 2.91 | 2011-05-27 | 1.05 %

Dodam, że w tej chwili zawartość tabeli WARTOSC jest następująca:

id | waluta_id | kurs| data
1 | 1	| 2.76 | 2011-04-10
2 | 2 | 4.07 | 2011-04-10
3 | 3 | 3.09 | 2011-04-10
4 | 4 | 4.66 | 2011-04-10
5 | 5 | 0.10 | 2011-04-10
9 | 1 | 2.91 | 2011-05-02
10 | 2 | 3.85 | 2011-05-02
11 | 3 | 3.19 | 2011-05-02
12 | 4 | 4.47 | 2011-05-02
13 | 5 | 0.12 | 2011-05-02

W jaki sposób tego dokonać? Jest możliwość, aby pominąć zapisywanie do tabeli WARTOSC nowych kursów? Ktoś pomoże?

0
Thorgaaal napisał(a)

W jaki sposób tego dokonać? Jest możliwość, aby pominąć zapisywanie do tabeli WARTOSC nowych kursów? Ktoś pomoże?
możesz to zrobić na poziomie php

0

Pomyślałem, że jednak wykorzystam tę tabelę WARTOSC.

id | waluta_id | kurs| data
1 | 1 | 2.76 | 2011-04-10
2 | 2 | 4.07 | 2011-04-10
3 | 3 | 3.09 | 2011-04-10
4 | 4 | 4.66 | 2011-04-10
5 | 5 | 0.10 | 2011-04-10

Załóżmy, że te powyższe dane to stare kursy walut w tabeli.
Natomiast te poniższe, to pobrane aktualne kursy ze strony.

id | waluta_id | kurs| data
9 | 1 | 2.91 | 2011-05-02
10 | 2 | 3.85 | 2011-05-02
11 | 3 | 3.19 | 2011-05-02
12 | 4 | 4.47 | 2011-05-02
13 | 5 | 0.12 | 2011-05-02

W jaki sposób wywołać zapytanie SQL, aby wyświetlić w jednej tabelce 5 wyników, w taki oto sposób?

Lp. | Nazwa | Kod | Kurs | Data | Nowy kurs | Aktualna data | Zmiana procentowa

  1. | dolar | USD | 2.76 | 2011-04-10 | 2.91 | date('Y-m-d') | %
  2. | euro | EUR | 4.07 | 2011-04-10 | 3.85 | date('Y-m-d') | %
  3. | frank | CHF | 3.09 | 2011-04-10 | 3.19 | date('Y-m-d') | %
  4. | funt | GBP | 4.66 | 2011-04-10 | 4.47 | date('Y-m-d') | %
  5. | rubel | RUB | 0.10 | 2011-04-10 | 0.12 | date('Y-m-d') | %

Co należy jeszcze uwzględnić w poniższym zapytaniu?

 
SELECT * FROM waluta LEFT JOIN wartosc ON waluta.id=wartosc.waluta_id ORDER BY wartosc.DATA DESC LIMIT 0,10

Proszę o wyrozumiałość. Tego typu zapytania sprawiają mi kłopot.

1 użytkowników online, w tym zalogowanych: 0, gości: 1