order by - metlik i zacmienie
RoB - 01-11-2007 00:02
order by - metlik i zacmienie
witam
mam tabelke: id | kind | value ------------------
i mam kilka typow kind
i teraz uzytkownik chce posortowac po value danego typu (kind)
jak zrobie zwykle order by, to uwzgledni wszystkie typy i niezupelnie o to mi chodzi, chcialem to zrobic tak:
SELECT ... from products p left join tabelka t on p.id = t.id ... where t.kind = 'typ' ... ORDER BY t.value
sortuje dobrze, ale... jesli wytne t.kind = 'typ', to zwraca wiecej wynikow. wiec zmienilem tez na:
(t.kind = 'typ' or t.kind is null), ale tyle samo wynikow zwrocilo (czyli mniej niz powinno).
to tylko fragment sql, bo jest dosyc rozbudowany, mam lekkie zacmienie, co robie nie tak? ewentualnie wskazowki jak to obejsc w ladny sposob?
z gory dzieki za pomoc
pozdrawiam
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 01-11-2007 00:02
RoB wrote: > witam > > mam tabelke: > id | kind | value > ------------------ > > i mam kilka typow kind > > > i teraz uzytkownik chce posortowac po value danego typu (kind) > > jak zrobie zwykle order by, to uwzgledni wszystkie typy i niezupelnie o to mi > chodzi, chcialem to zrobic tak: > > SELECT ... from products p left join tabelka t on p.id = t.id ... > where t.kind = 'typ' ... ORDER BY t.value > > > sortuje dobrze, ale... jesli wytne t.kind = 'typ', to zwraca wiecej wynikow. > wiec zmienilem tez na: > > (t.kind = 'typ' or t.kind is null), ale tyle samo wynikow zwrocilo (czyli mniej > niz powinno). > > to tylko fragment sql, bo jest dosyc rozbudowany, mam lekkie zacmienie, co > robie nie tak? ewentualnie wskazowki jak to obejsc w ladny sposob?
order by kind,value ?
-- P.M.
RoB - 01-11-2007 00:02
> order by kind,value ? nie rozumiemy sie chyba, nie chodzi mi o :
kind | value A | 1 A | 2 A | 3 A | 4 B | 1 B | 2 C | 5 C | 8
tylko: posortuj wedlug value, ale uwzglednij tylko kind A w sortowaniu (przy czym tabelka ta jest tabelka dolaczana przez LEFT JOIN, czyli nie kazdy rekord z tabeli produkt moze miec rekord typu A w tabeli tabelka.
moge tak zrobic jak piszesz, ale to da mi mozliwosc posortowania po A i C, a jak posortowac po B ? asc i desc chyba wyczerpuje mozliwosci w tym wzgledzie :)
pozdrawiam RoB
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Marcin_Wr=F3blewski?= - 01-11-2007 00:02
RoB <rob1980WYTNIJTO@poczta.onet.pl> napisał(a):
> > order by kind,value ? > nie rozumiemy sie chyba, nie chodzi mi o : > > kind | value > A | 1 > A | 2 > A | 3 > A | 4 > B | 1 > B | 2 > C | 5 > C | 8 > > tylko: posortuj wedlug value, ale uwzglednij tylko kind A w sortowaniu (przy > czym tabelka ta jest tabelka dolaczana przez LEFT JOIN, czyli nie kazdy rekord > z tabeli produkt moze miec rekord typu A w tabeli tabelka. > > moge tak zrobic jak piszesz, ale to da mi mozliwosc posortowania po A i C, a > jak posortowac po B ? asc i desc chyba wyczerpuje mozliwosci w tym wzgledzie :) > > pozdrawiam > RoB >
Nie rozumiem... pytasz: "jak posortować po B?" Przecież dla B też jest posortowane.
Może chodzi ci o to że chcesz mieć to posortowane tylko dla B, a dla reszty nieuporządkowane? Ale wówczas - co za różnica, jaka kolejność będzie dla reszty?
Przy okazji: jaka baza?
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
RoB - 01-11-2007 00:02
> > (...) ale uwzglednij >>>tylko<<< kind A w sortowaniu > Może chodzi ci o to że chcesz mieć to posortowane tylko dla B, dokladnie! nie chcialem krzyczec i pisac duzymi literami:)
> nieuporządkowane? Ale wówczas - co za różnica, jaka kolejność będzie dla > reszty? zadna, kwestia dobrego zapytania, zeby nie pobieralo mi za malo rekordow. chce posortowac wg value, ale TYLKO dla danego typu, reszta mnie nie interesuje.
> Przy okazji: jaka baza? db2 8.x
pozdrawiam RoB
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Adam_P=B3aszczyca?= - 01-11-2007 00:02
On 31 Oct 2007 13:53:52 +0100, "RoB" <rob1980WYTNIJTO@poczta.onet.pl> wrote:
>> > (...) ale uwzglednij >>>tylko<<< kind A w sortowaniu >> Może chodzi ci o to że chcesz mieć to posortowane tylko dla B, >dokladnie! nie chcialem krzyczec i pisac duzymi literami:)
To dwa selecty, jeden z where kind=A i order by, drugie z where kind<>A i połącz unionem.
-- ___________ (R) /_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122688 ___/ /_ ___ ul. Na Szaniec 23/70, 31-560 Kraków, (012) 3783198 _______/ /_ http://trzypion.oldfield.org.pl/wieliczka/ ___________/ GG: 3524356
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 01-11-2007 00:02
RoB wrote: >>> (...) ale uwzglednij >>>tylko<<< kind A w sortowaniu >> Może chodzi ci o to że chcesz mieć to posortowane tylko dla B, > dokladnie! nie chcialem krzyczec i pisac duzymi literami:)
Myślisz, że duże litery coś by pomogły gdy Twoje pytanie jest sprzeczne, co zauważył Marcin w zdaniu cytowanym niżej?
>> nieuporządkowane? Ale wówczas - co za różnica, jaka kolejność będzie dla >> reszty? > zadna, kwestia dobrego zapytania, zeby nie pobieralo mi za malo rekordow. > chce posortowac wg value, ale TYLKO dla danego typu, reszta mnie nie > interesuje.
No to dla B masz posortowane. A reszta przecież Cię nie interesuje.
P.S. Po co podajesz wynik polecenia, które wiem jak działa. Podaj wynik taki jaki chcesz uzyskać!
-- P.M.
RoB - 01-11-2007 00:02
> Myślisz, że duże litery coś by pomogły gdy Twoje pytanie jest sprzeczne, > co zauważył Marcin w zdaniu cytowanym niżej? zwrocilyby uwage na waznosc slowa, podkresliloby jego wage.
> >> nieuporządkowane? Ale wówczas - co za różnica, jaka kolejność będzie dla > >> reszty? > No to dla B masz posortowane. A reszta przecież Cię nie interesuje. > P.S. Po co podajesz wynik polecenia, które wiem jak działa. Podaj wynik > taki jaki chcesz uzyskać! dlaczego jestes niemily, skoro ja dla Ciebie jestem mily? :) napisalem jaki wynik chce uzyskac: chce posortowac po "value", ale uwzgledniajac tylko jakis "kind" i zwykly warunek w where eliminujacy pozostale "kind" nie wystarcza, bo zwraca mi za mala liczbe rekordow. napisalem to 2x. podalem wynik jakiego polecenia? swoja droga dobrze, ze wiesz jak dziala. dzieki za probe pomocy, podobnie jak pozostalym na tej grupie. jedynie Ty jestes niemily, za co? za "chyba sie nie zrozumielismy"? wybacz.
pozdrawiam RoB
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
RoB - 01-11-2007 00:02
> To dwa selecty, jeden z where kind=A i order by, drugie z where > kind<>A i połącz unionem. dzieki za wskazowke, juz probuje cos z tym zrobic :)
pozdrawiam RoB
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Adam_P=B3aszczyca?= - 01-11-2007 00:02
On 31 Oct 2007 15:51:25 +0100, "RoB" <rob1980WYTNIJTO@poczta.onet.pl> wrote:
>podalem wynik jakiego polecenia? swoja droga dobrze, ze wiesz jak dziala.
Tylko wiesz, jesli posortujesz telko te wiersze, które chcesz, to dalej nei masz żadnej gwarancji, że inne są nieposortowane. Moga być, bo akurat tak się RDBMSowi spodoba. Jesli nei masz klauzuli order by, to kolejność wierszy jest dowolna, czyli mogą być posortowane. -- ___________ (R) /_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122 688 ___/ /_ ___ ul. Na Szaniec 23/70 31-560 Kraków (012 378 31 98) _______/ /_ http://trzypion.oldfield.org.pl/wieliczka/foto.html ___________/ mail: _555@irc.pl GG: 3524356
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MySQL] =?ISO-8859-2?Q?Odwr=F3cenie_domy=B6lnego_order_by=2C?==?ISO-8859-2?Q?_ale_bez_parametru=2E?=
=?ISO-8859-2?Q?=5BORACLE=2C_ORDER_BY=5D_Czy_indeksowane_?==?I SO-8859-2?Q?kolumny_przy=B6piesz=B1_sortowanie=3F?=
order by rand() w mySQL - czy mozna to czyms innym zastapic?
mysql: left join group by order by - problem z sortowaniem
[mysql]Numerator wiersza / uniknięcie podwójnego ORDER BY
[oracle] create view, order by, with read only ?
[MySQL] Zapytanie do bazy + order
Problem: Order by i Nastepny/Poprzedni
[MySQL] order by "adres"
[MSSQL 2000] ORDER BY
zanotowane.pldoc.pisz.plpdf.pisz.plmorebeer.opx.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 |
|