problem z select MAX (kolumna) from tabela
Marcel - 23-03-2006 03:32
problem z select MAX (kolumna) from tabela
Witam,
Nie moge sobie poradzic z wybraniem rekordu z tableli gdzie cena jest najwieksza ale zeby pobral mi tez id tego rekordu czy nazwe oferty
POLA TABELI: id_oferty, nazwa_oferty, cena
chodi mniejwiecej o to ale tak nie dziala:
SELECT id_oferty, MAX(cena) as cena_max from oferty lub SELECT nazwa_oferty, MAX(cena) as cena_max from oferty
Prosze o podpowiedz jak rozwiazac ten problem
Pozdr, MAX
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Kichus - 23-03-2006 03:32
Marcel napisał(a): > Prosze o podpowiedz jak rozwiazac ten problem
Mozna na przyklad zupelnie inaczej... select id_oferty, cena from oferty order by cena desc limit 1; :)
-- Kichus
keczerad - 24-03-2006 00:08
>Prosze o podpowiedz jak rozwiazac ten problem
poznac SQLa ewentulanie nauczyc sie czytac ze zrozumieniem wyrzucane bledy, wiedizec ze zeby robic MAX SUM MIN itp trzeba zrobic Group by
SELECT nazwa_oferty, MAX(cena) as cena_max from oferty Group by nazwa_oferty
-- keczerad http://www.emo.com.pl
orcus - 24-03-2006 00:09
Wed, 22 Mar 2006 23:36:13 -0800, keczerad wrote:
>>Prosze o podpowiedz jak rozwiazac ten problem > > poznac SQLa ewentulanie nauczyc sie czytac ze zrozumieniem wyrzucane > bledy, wiedizec ze zeby robic MAX SUM MIN itp trzeba zrobic Group by
teraz wroc do postu i przeczytaj go _ze_zrozumieniem_
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
Alianora - 24-03-2006 00:09
Marcel napisał(a): > Witam, > > Nie moge sobie poradzic z wybraniem rekordu z tableli gdzie cena jest > najwieksza ale zeby pobral mi tez id tego rekordu czy nazwe oferty > > POLA TABELI: > id_oferty, nazwa_oferty, cena
SELECT * FROM oferty ORDER BY cena DESC LIMIT 1; O to chodzi?
keczerad - 24-03-2006 00:09
orcus napisał(a): > Wed, 22 Mar 2006 23:36:13 -0800, keczerad wrote: > > >>>Prosze o podpowiedz jak rozwiazac ten problem >> >>poznac SQLa ewentulanie nauczyc sie czytac ze zrozumieniem wyrzucane >>bledy, wiedizec ze zeby robic MAX SUM MIN itp trzeba zrobic Group by > > > teraz wroc do postu i przeczytaj go _ze_zrozumieniem_ >
ja napisalem zeby pobieral najwieksza cene z danej oferty, bo autorowi prawdopobnie o to chodzilo, inaczej zapytanie z samym sum na pewno by zadzialalo, takze nie zwracaj uwagi jak sam nie potrafisz czytac ze zrozumieniem
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
orcus - 24-03-2006 00:09
Thu, 23 Mar 2006 16:56:54 +0100, keczerad wrote: > ja napisalem zeby pobieral najwieksza cene z danej oferty, bo autorowi > prawdopobnie o to chodzilo, inaczej zapytanie z samym sum na pewno by > zadzialalo, takze nie zwracaj uwagi jak sam nie potrafisz czytac ze > zrozumieniem
Wed, 22 Mar 2006 23:09:14 +0000, Marcel wrote: > Nie moge sobie poradzic z wybraniem rekordu z tableli gdzie cena jest > najwieksza ale zeby pobral mi tez id tego rekordu czy nazwe oferty
i to jest wedlug Ciebie najwieksza cena z danej oferty? Bo wedlug mnie to najwieksza cena z _calej_ tabeli tylko ze potrzebne jest tez id rekordu zawierajacego ta cene, bo nie da sie tego wyciagnac w prosty sposob, bo masz racje ze max wymaga funkcji agregujacej ale moze tez dzialac na calej tabeli:
SELECT MAX(cena) FROM...
ale juz dostawiajac tam id zapytanie wyrzuci blad... BTW: studenci kiedys robiac takie cuda szybko sie uczyli bo system odmawial posluszenstwa i trzeba bylo wszystko restartowac.
i sposobow na rozwiazanie tego teoretycznie jest wiele ale najlepszy jest juz podany wczesniej z posortowaniem i wybranim jednego rekordu.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
keczerad - 24-03-2006 00:09
orcus napisał(a): > Thu, 23 Mar 2006 16:56:54 +0100, keczerad wrote: > >>ja napisalem zeby pobieral najwieksza cene z danej oferty, bo autorowi >>prawdopobnie o to chodzilo, inaczej zapytanie z samym sum na pewno by >>zadzialalo, takze nie zwracaj uwagi jak sam nie potrafisz czytac ze >>zrozumieniem > > > Wed, 22 Mar 2006 23:09:14 +0000, Marcel wrote: > >>Nie moge sobie poradzic z wybraniem rekordu z tableli gdzie cena jest >>najwieksza ale zeby pobral mi tez id tego rekordu czy nazwe oferty > > > i to jest wedlug Ciebie najwieksza cena z danej oferty?
tak bo tam bylo jeszcze zapytanie ktorego ty "nie zauwazyles", w ktorym ewidentnie ktos chcial wyciagnac max cene z kazdej oferty, kazdy to interpretuje po swojemu, bo jakos nie moge sobie wyobrazic ze programista nie sprobowal zapytania bez id_oferty, moi zdaniem po prostu nie wiedzila ze istnieje cos takiego jak group by i jednak chcial wyciagnac max cene z oferty
> i sposobow na rozwiazanie tego teoretycznie jest wiele ale najlepszy jest > juz podany wczesniej z posortowaniem i wybranim jednego rekordu.
MAX w tej sytuacji jest bardziej intuicyjny i po to jest, a nie sqlowy limit i sortowanie sluzy do czegos innego, jezeli tak nie jest to prosze powiedz co jest MAX jak nie do wyciagania maksimum, chetnie poslucham choc nie jestem studentem ;)
Ps. oczywiscie jestem czlowiek i moge sie mylic, ale to moje prawo.
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
orcus - 24-03-2006 00:09
Thu, 23 Mar 2006 19:44:52 +0100, keczerad wrote:
> MAX w tej sytuacji jest bardziej intuicyjny i po to jest, a nie sqlowy > limit i sortowanie sluzy do czegos innego, jezeli tak nie jest to prosze > powiedz co jest MAX jak nie do wyciagania maksimum, chetnie poslucham > choc nie jestem studentem ;)
jeszcze raz - szukamy najwyzszej oceny wiec owszem mozna to zrobic z MAX:
SELECT * FROM tbl WHERE cena = (SELECT MAX(cena) FROM tbl);
ale jak widac wymaga to podzapytania co nie jest optymalnym rozwiazaniem
zapytanie z LIMIT jest po prostu szybsze.
MAX sluzy do wyciagniecia wartosci i _tylko_ niej z calej tabeli, chyba ze uzyjemy funkcji agregujacych. Ale caly spor rozbija sie o interpretacje pytania.
Jesli chodzi o GROUP BY - jesli autor watku chcialby zeby to tak wygladalo to mysle ze troche inaczej skonstuowalby pytanie. IMHO posunales sie za daleko w rozumowaniu i stworzyles nadinterpretacje, co mi tez sie dosc czesto zdarza. Ironiczne bylo to ze zwrociles w tym samym poscie uwage na brak czytania ze zrozumieniem wiec MSPANC zwrocic Ci uwagi.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
keczerad - 24-03-2006 00:09
orcus napisał(a):
> zapytanie z LIMIT jest po prostu szybsze.
lubisz pisac bzdury, czy sprawdzas to co piszesz ?
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
orcus - 24-03-2006 00:09
Thu, 23 Mar 2006 20:20:50 +0100, keczerad wrote:
> orcus napisał(a): > >> zapytanie z LIMIT jest po prostu szybsze. > > lubisz pisac bzdury, czy sprawdzas to co piszesz ?
Jesli myslisz ze MySQL sortuje, a pozniej wyswietla tylko jeden to: http://dev.mysql.com/doc/refman/5.0/...imization.html druga kropeczka
powiedz mi ze wykoanie podzapytanie bedzie szybsze(moze nie dokladnie - bardziej optymalne) niz zrobienie w praktyce(przez MySQLd) tego samego bez niego.
No chyab ze z tymi bzdurami to Ci o co inego chodzilo - napisz, bo stosuje ta konstrukcje od dluzszego czasu i jesli jest cos szybszego i przystepniejszego to chetnie ja tym zastapie.
Poza tym podzapytania sa tylko w MySQL > 4.1 a duzo hostingow niestety pracuje na nizszych wersjach:/
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
keczerad - 24-03-2006 00:09
orcus napisał(a): > Thu, 23 Mar 2006 20:20:50 +0100, keczerad wrote: > > >>orcus napisał(a): >> >> >>>zapytanie z LIMIT jest po prostu szybsze. >> >>lubisz pisac bzdury, czy sprawdzas to co piszesz ? > > > Jesli myslisz ze MySQL sortuje, a pozniej wyswietla tylko jeden to: > http://dev.mysql.com/doc/refman/5.0/...imization.html > druga kropeczka > > powiedz mi ze wykoanie podzapytanie bedzie szybsze(moze nie dokladnie - > bardziej optymalne) niz zrobienie w praktyce(przez MySQLd) tego samego bez > niego.
> No chyab ze z tymi bzdurami to Ci o co inego chodzilo - napisz, bo stosuje > ta konstrukcje od dluzszego czasu i jesli jest cos szybszego i > przystepniejszego to chetnie ja tym zastapie. > > Poza tym podzapytania sa tylko w MySQL > 4.1 a duzo hostingow niestety > pracuje na nizszych wersjach:/ >
nie ucz mnie co jest w jakiej wersji bo ja dobrze wiem co jaka wersja obsluguje, wiem tez ze zapytanie :
select MAX(data) from statystyka czas 0.1020 s select data from statystyka Order by data desc Limit 1 czas 0.2875 s
ilosc rekordow 140 tysiecy
select MAX(data) from statystyka_cen czas 0.2099 select data from statystyka_cen Order by data desc Limit 1 czas 0.2777
ilosc rekordow 188 tysiecy
zawsze bylo tak samo szybciej chodzi max, koniec i kropka i prosze skoncz z tymi herezjami ze maxa wyciaga sie limitem i orderem bo to nie prawda.
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
orcus - 24-03-2006 00:09
Thu, 23 Mar 2006 21:14:24 +0100, keczerad wrote:
> select MAX(data) from statystyka > czas 0.1020 s > select data from statystyka Order by data desc Limit 1 > czas 0.2875 s
ale gdzie to pierwsze zapytanie zwraca id tego rekordu? Bo o to wyraznie prosil autor. W wypadku gdy ma to byc sama wartosc najwieksza nie poddawalem w watpliwosc ze max sprawdzi sie lepiej.
to moze teraz: SELECT * FROM tbl WHERE cena = (SELECT MAX(cena) FROM tbl);
i sprawdz czasy. Ja pozostane na poziomie teoretycznym bo nie lubie takich podzapytan.
> zawsze bylo tak samo szybciej chodzi max, koniec i kropka i prosze > skoncz z tymi herezjami ze maxa wyciaga sie limitem i orderem bo to nie > prawda.
masz racie ale zrozum w koncu ze tu nie chodzi o _samego_ maxa.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
Lemat - 24-03-2006 00:09
orcus napisał(a): > > masz racie ale zrozum w koncu ze tu nie chodzi o _samego_ maxa. > a tak włączę się z głupia frant:
id, data 1 1 2 2 3 2
jaki id powinien być w wyniku? ;)
-- Pozdrawiam Lemat abuse z amm.net.pl: SPAM to nie zamówiona przesyłka reklamowa wysłana do odbiorcy bez jego zgody. W przypadku Usenet to nie zachodzi - Pana sam pobrał tę pocztę - konfigurując konto grupy w swoim komputerze, tym samym wyrażając zgodę na odbieranie wszystkiego co tam jest.
orcus - 24-03-2006 00:09
Thu, 23 Mar 2006 21:53:22 +0100, Lemat wrote:
> orcus napisał(a): >> >> masz racie ale zrozum w koncu ze tu nie chodzi o _samego_ maxa. >> > a tak włączę się z głupia frant: > > id, data > 1 1 > 2 2 > 3 2 > > jaki id powinien być w wyniku? ;)
no tak - to jest pewien problem... wersja z podzapytanim bedzie tu lepsza bo zwroci obydwa...
kiedys juz ktos zwrocil mi na to uwage ale jakos wylecialo mi to zupelnie. Po prostu zwykle w praktyce nie gra to duzej roznicy, choc czasem moze stac sie istotne.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
keczerad - 24-03-2006 00:09
orcus napisał(a): >>id, data >>1 1 >>2 2 >>3 2 >> >>jaki id powinien być w wyniku? ;) > > > no tak - to jest pewien problem... wersja z podzapytanim bedzie tu lepsza > bo zwroci obydwa... > > kiedys juz ktos zwrocil mi na to uwage ale jakos wylecialo mi to zupelnie. > Po prostu zwykle w praktyce nie gra to duzej roznicy, choc czasem moze > stac sie istotne. >
pomijajac fakt, ze jeden rezultat nie mozna z niczym porownywac i tak naprawde to max z jednym numerem zamowienia nic nie mowi, to zadna inforamcja przy najmniej z mojego punktu widzenia, jak bym mial cokolwiek porownywac to raczej zrobil bym sum na cenie i ilosci, grupujac po zamowieniach, ofertach to byla by jakas informacja a tak jak dla mnie nie ma zadnej.
PS. nie wiem do czego to sluzy i to taka moja dygresja. --
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
orcus - 25-03-2006 01:19
Thu, 23 Mar 2006 22:42:34 +0100, keczerad wrote:
> PS. nie wiem do czego to sluzy i to taka moja dygresja.
komus potrzebna jest oferta o maksymalnej cenie - nie czepiejmy sie ze to nieprzeydatne skoro komus jest to potrzebne.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|