ďťż
 
group by - problem ďťż
 
group by - problem
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

group by - problem



Student 'Tech.Internetowych' - 01-12-2005 20:33
group by - problem
  witam, chialbym odnalesc minimalna cene okreslonego
towaru ale wypisac przy tym odpowiedniego importera.
Probowalem jak ponizej ale nie dziala - zawsze
wypisuje importera1

Czy ktos wskaze co robie zle ? (MySQL)

Pozdrawiam,

create temporary table tmp
(ID int not null,
importer varchar(10),
towar varchar(10),
cena double);

insert into tmp values (1,'importer1','towar1',21);
insert into tmp values (2,'importer1','towar2',32);
insert into tmp values (3,'importer1','towar3',23);
insert into tmp values (4,'importer2','towar1',11);
insert into tmp values (5,'importer2','towar2',12);
insert into tmp values (6,'importer2','towar3',13);

select importer,towar,min(cena) from tmp
group by towar;

------





Sergiusz Rozanski - 01-12-2005 20:33

  On 2005-11-30, Student 'Tech.Internetowych' <tech1@ux.wsp.krakow.pl> wrote:
> insert into tmp values (5,'importer2','towar2',12);
> insert into tmp values (6,'importer2','towar3',13);
>
>
> select importer,towar,min(cena) from tmp
> group by towar;
>

a to aby się nie sypie?
group by musi lecieć też po importer, albo na importer musi być
agregacja, to warunek działania group by.

więc:

select importer,towar,min(cena) from tmp group by towar, importer;

--
*** rozanski.at.sergiusz.dot.com sq3bkn ***
*** http://jeep.comm.pl ***
*** rtg project http://gg.overwap.net ***




Pegaz - 01-12-2005 20:33
=?iso-8859-2?Q?por=F3wnanie_ceny_z_cen=B1_minimaln=B1_=3F?=
  > witam, chialbym odnalesc minimalna cene okreslonego
> towaru ale wypisac przy tym odpowiedniego importera.

pomysł polega na tym aby cenę towaru porównywać z ceną minimalną i jeśli to
właśnie ta cena to wypisać importera:

select towar,cena,importer
from tmp t1
where cena=(select min(cena) from tmp t2 where t2.towar=t1.towar group by
towar)

pozdrawiam
Pegaz.

-----
Amatorzy zbudowali Arkę, a profesjonaliści Titanic-a.




Student 'Tech.Internetowych' - 01-12-2005 20:33

  Sergiusz Rozanski <write-only-with-spf@sergiusz.com> wrote:
> On 2005-11-30, Student 'Tech.Internetowych' <tech1@ux.wsp.krakow.pl> wrote:
>> insert into tmp values (5,'importer2','towar2',12);
>> insert into tmp values (6,'importer2','towar3',13);
>>
>>
>> select importer,towar,min(cena) from tmp
>> group by towar;
>>
>
> a to aby si? nie sypie?
> group by musi lecie? te? po importer, albo na importer musi by?
> agregacja, to warunek dzia?ania group by.
>
> wi?c:
>
> select importer,towar,min(cena) from tmp group by towar, importer;
>
Witaj, dziek za szybka odpowiedz,
Niestety takie zapytanie wywala mi wszystkie ceny dla towarow
a nie tylko odpowiedz, ze najnizsza cene na towar1 oferuje importer2 itd ...

select importer,towar,min(cena) from tmp group by towar, importer;
+-----------+--------+-----------+
| importer | towar | min(cena) |
+-----------+--------+-----------+
| importer1 | towar1 | 21 |
| importer2 | towar1 | 11 |
| importer1 | towar2 | 32 |
| importer2 | towar2 | 12 |
| importer1 | towar3 | 23 |
| importer2 | towar3 | 13 |
+-----------+--------+-----------+

Pozdrawiam, Olek





Wojtek pBT (lapt) - 01-12-2005 20:33

  Dnia 2005-11-30 09:05, Użytkownik Pegaz napisał:

>>witam, chialbym odnalesc minimalna cene okreslonego
>>towaru ale wypisac przy tym odpowiedniego importera.
>
>
> pomysł polega na tym aby cenę towaru porównywać z ceną minimalną i jeśli to
> właśnie ta cena to wypisać importera:
>
> select towar,cena,importer
> from tmp t1
> where cena=(select min(cena) from tmp t2 where t2.towar=t1.towar group by
> towar)

prawie dobrze ;)

Dam CI to na 2 zapytaniach bez subselektów

1) Wybierasz towary o najniższej cenie

SELECT towarId, min(cena) FROM tab GROUP BY cena;

2) Jeżeli masz już listęnajtańszych towarów, to możesz pobrac importera:

SELECT cena, importer FROM tab WHERE towarId IN( __tu masz wynik z
poprzedniego zapytania__)

Tak naprawdę nigdzy jeszcze porządnie nie działałem z podzapytaniami,
więc pewnie to co podam niżej da się zrobić dużo lepiej (jeżęli w ogóle
jest to poprawne...):

SELECT cena, importer FROM tab WHERE towarId IN(SELECT towarId FROM
(SELECT towarId, min(cena) FROM tab GROUP BY cena));

pBT




Sergiusz Rozanski - 01-12-2005 20:33

  On 2005-11-30, Wojtek pBT (lapt) <bato3@WirtualanPolskap.pl> wrote:
> prawie dobrze ;)
>
> Dam CI to na 2 zapytaniach bez subselektów
>
> 1) Wybierasz towary o najniższej cenie
>
> SELECT towarId, min(cena) FROM tab GROUP BY cena;

to zwraca wszystkie towary

> 2) Jeżeli masz już listęnajtańszych towarów, to możesz pobrac importera:
>
> SELECT cena, importer FROM tab WHERE towarId IN( __tu masz wynik z
> poprzedniego zapytania__)

ponieważ wyższe zwróciło wszystkie towary to to również :)

> Tak naprawdę nigdzy jeszcze porządnie nie działałem z podzapytaniami,
> więc pewnie to co podam niżej da się zrobić dużo lepiej (jeżęli w ogóle
> jest to poprawne...):

:)

a tak naprawdę to trzeba wybrać _pary_ a nie same towary więc:

select * from tab,
(SELECT towarId, min(cena) as cena
FROM tab GROUP BY cena) as niskieceny
where tab.towarid=niskieceny.towarid and tab.cena=niskieceny.cena

--
*** rozanski.at.sergiusz.dot.com sq3bkn ***
*** http://jeep.comm.pl ***
*** rtg project http://gg.overwap.net ***




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 01-12-2005 20:34

  Sergiusz Rozanski wrote:
> select * from tab,
> (SELECT towarId, min(cena) as cena
> FROM tab GROUP BY cena) as niskieceny
> where tab.towarid=niskieceny.towarid and tab.cena=niskieceny.cena

GROUP BY towarId - trzeba patrzyć co się kopiuje! ;)

--
P.M.




Sergiusz Rozanski - 01-12-2005 20:34

  Dnia 30.11.2005 Paweł Matejski <madej@spam.madej.pl.eu.org> napisał/a:
> Sergiusz Rozanski wrote:
>> select * from tab,
>> (SELECT towarId, min(cena) as cena
>> FROM tab GROUP BY cena) as niskieceny
>> where tab.towarid=niskieceny.towarid and tab.cena=niskieceny.cena
>
> GROUP BY towarId - trzeba patrzyć co się kopiuje! ;)

fakt ;) sorry

--
*** rozanski.at.sergiusz.dot.com sq3bkn ***
*** http://jeep.comm.pl ***
*** rtg project http://gg.overwap.net ***




Wojtek pBT (lapt) - 01-12-2005 20:34

  Dnia 2005-11-30 10:25, Użytkownik Sergiusz Rozanski napisał:

> On 2005-11-30, Wojtek pBT (lapt) <bato3@WirtualanPolskap.pl> wrote:
>
>>prawie dobrze ;)
>>
>>Dam CI to na 2 zapytaniach bez subselektów
>>
>>1) Wybierasz towary o najniższej cenie
>>
>>SELECT towarId, min(cena) FROM tab GROUP BY cena;
>
>
> to zwraca wszystkie towary

Czepiasz się ;) , już miałem trudności z myśleniem... Miało być GRPUP BY
towarID

> select * from tab,
> (SELECT towarId, min(cena) as cena
> FROM tab GROUP BY cena) as niskieceny
> where tab.towarid=niskieceny.towarid and tab.cena=niskieceny.cena
>
Ten sam błąd ;)
  • 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
  • ptsite.xlx.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