Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Pobieranie danychz bazy
psychol1986
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Witam mam taki problem, mam 2 tabele

rates - przetrzymuje nazwy walut
currencies - przetrzymuje daty, wartości walut i id waluty

Wybrałem sobie wszystkie dane takim zapytaniem:

select currencies.name, rates.date, rates.rate from currencies, rates where rates.currency_id = currencies.id

I teraz chciałbym wyprodukować taką oto tabelkę

nazwa waluty | data początkowa | wartość dla daty początkowej | data końcowa | wartość dla daty końcowej

jednak nie mogę sobie z tym poradzić bo każdy wiersz z zapytania to osobna tablica. Od razu mówie że w tabeli rates jest kilka odwolan do jednej waluty z tabeli currencies. Sprawa pewnie jest prosta ale jestem początkujący wiec.... Będę wdzięczny za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


@neo1986kk to co napisałeś jest nie poprawne, ponieważ ORDER BY działa po GROUP BY

do autora:
musisz to zrobić przy pomocy 2 zapytań, być może dałoby się pokombinować z podzapytaniami ale to nie zawsze jest dobre wyjście.

Jednym zapytaniem wyłapiesz wartość dla najwyższej daty, drugim dla najniższej, wszystko umieszczasz w tablicy a potem sobie to wyświetlisz jak chcesz;

mniej więcej coś takiego:
  1. $data = array();
  2. $sql = 'SELECT id, currency_id, MIN(date) as min, rate, date FROM rates GROUP BY currency_id';
  3. while($row = mysql_fetch_assoc)
  4. {
  5. if(!isset($data[$row['currency_id']])) $data[$row['id']]= array();
  6. $data[$row['currency_id']]['min'] = array('date'=>$row['min'], 'rate'=>$row['rate']);
  7. }
  8.  
  9. $sql = 'SELECT id, currency_id, MAX(date) as max, rate, date FROM rates GROUP BY currency_id';
  10. while($row = mysql_fetch_assoc)
  11. {
  12. if(!isset($data[$row['currency_id']])) $data[$row['id']]= array();
  13. $data[$row['currency_id']]['max'] = array('date'=>$row['max'], 'rate'=>$row['rate']);
  14. }
  15. print_r($data);


Ten post edytował tehaha 10.02.2011, 18:25:29
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 10:23