![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
mam dwie tabele
- towar: gdzie jest lista towarow - cena: gdzie mam liste cen danehgo towaru (przy czym trzymam tam cala historie czyli wszystkie ceny danego towaru lacznie z dana wpisania - najnowsza data danego towaru oznacza aktualna cene) pytanie: Jakie zapytanie zadać aby wyciagnąć wszystkie rekordy z tabeli towary i tylko jeden rekord do jednego towaru z najnowszą (aktualną) ceną. probowałem [sql:1:a73d1eb7ab]SELECT * FROM towar LEFT JOIN cena ON (towar.id_towaru=cena_id_towaru)[/sql:1:a73d1eb7ab]Lecz niestety wykazuje wszystkie rekordy z tabeli towary i wszystkie ceny lacznie ze starymi. Ogólnie dobrze że tak robi bo takie pytanie zadałem. jednak moje oczekiwania są inne. Czy ktos ma jakąś koncepcję? wszystkie towary połączone z aktualnymi cenami. Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Moze tak?
[sql:1:223be12d08]select * from produkty left join ceny on (produkty.id_towaru=ceny.id_towaru) GROUP BY produkty.id_towaru ORDER BY ceny.czas DESC[/sql:1:223be12d08] Sprawdziłem na minimalnej ilości danych i działa - zobacz u siebie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
nie do konca podaje 1 napotkana cena a nie cena gdzie data jest najnowsza
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W sumie siedziałem nad tym, i nic nie wymyśliłem.
A wybiera losowy wiersz a nie posortowany ponieważ najpierw wykonuje sie GROUP a dopiero potem ORDER ... Musze przyznać , że nie mam juz pomysłu. |
|
|
![]()
Post
#5
|
|
Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ok, zrobione (thx rzseattle za wskazówke o tabelach tymczasowych)
[sql:1:1e8bfe2399]CREATE TEMPORARY TABLE tempCeny ( prod_id int(11) not null, czas varchar(14))[/sql:1:1e8bfe2399] [sql:1:1e8bfe2399]INSERT INTO tempCeny (prod_id, czas) SELECT DISTINCT id_towaru, MAX(czas) FROM ceny GROUP BY id_towaru[/sql:1:1e8bfe2399] [sql:1:1e8bfe2399]SELECT towary.*, ceny.* FROM towary LEFT JOIN tempCeny ON (towary.id_towaru=tempCeny.prod_id) LEFT JOIN ceny ON (ceny.czas=tempCeny.czas) GROUP BY towary.id_towaru[/sql:1:1e8bfe2399] [sql:1:1e8bfe2399]DROP TABLE tempCeny[/sql:1:1e8bfe2399] opcjonalne, po zakończeniu skryptu tabela sama sie usuwa. |
|
|
![]()
Post
#7
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
to się powinno przydać:
http://www.mysql.com/doc/en/example-Maximu...-group-row.html |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Włąśnie w tym był problem, że nie można było użyć podzapytań, bo chodzi to na starym mysqlu.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
rowiazanie podeslal mi <b>kurtz </b>
sprawdze w domu ;-) |
|
|
![]()
Post
#10
|
|
Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
sprawdzialem dziala :-)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
czyli jakby na to nie patrzeć - trochę dostosowane zapytanie z podanego linka. Spen - nigdy nie kończ czytać przykładów po 1 zapytaniu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nieprawda bo doszedłem do drugiego (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) - dopiero potem zobaczyłem że to wszystko w manualu #-o
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 20:17 |