ďťż
 
problem z select MAX (kolumna) from tabela ďťż
 
problem z select MAX (kolumna) from tabela
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • tejsza.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com