[mysql] specyficzne wyswietlanie wynikow
sd - 12-11-2006 01:29
[mysql] specyficzne wyswietlanie wynikow
witam
mam tabele z kolumnami: id, nazwa, rodzaj
chcialbym wyswietlac z niej normalnie wiersze, ale jezeli rodzaj == 3 to niech wyrzuca 2 wiersze - jeden z rodzaj = 1, drugi z rodzaj = 2
probowalem z union ale nie wychodzi mi
da sie cos takiego zrobic w mysql? jezeli tak to jak?
pozdrawiam
JT - 12-11-2006 01:29
sd wrote: > witam > > mam tabele z kolumnami: > id, nazwa, rodzaj > > chcialbym wyswietlac z niej normalnie wiersze, ale jezeli rodzaj == 3to > niech wyrzuca 2 wiersze - jeden z rodzaj = 1, drugi z rodzaj = 2 > > probowalem z union ale nie wychodzi mi > > da sie cos takiego zrobic w mysql? > jezeli tak to jak?
Według mnie trochę słabo przybliżyłeś problem, bo jakoś nikt nie odpowiada.
SELECT * FROM tabela;
-- i wypisze Ci wszystkie wiersze. A dalej sobie sortuj, grupuj, jak chcesz :)
Ale pewnie nie o to Ci chodziło?
JT
sd - 12-11-2006 01:29
JT napisał(a):
> SELECT * FROM tabela; > > -- i wypisze Ci wszystkie wiersze. A dalej sobie sortuj, grupuj, jak > chcesz :) > > Ale pewnie nie o to Ci chodziło?
skad wiesz ?:)
poprostu zalozmy ze mam 3 wiersze 1 muzyka 1 2 komputery 2 3 rosliny 3
chce takie cos: 1 muzyka 1 2 komputery 2 3 rosliny 1 3 rosliny 2
czyli jak masz ta 3 kolumne wartosc 3, to zeby tak jakby 2 razy wyswietlil ten sam wiersz, a dodatkowo zeby zamienial ta trojke na 1 i 2 (w drugim wierszu - tym powtorzonym)
pozdrawiam
Wojtek pBT - 12-11-2006 01:30
Dnia 25-09-2006 o 21:59:20 sd <sd@sd.com> napisał(a):
> JT napisał(a): > >> SELECT * FROM tabela; >> -- i wypisze Ci wszystkie wiersze. A dalej sobie sortuj, grupuj, jak >> chcesz :) >> Ale pewnie nie o to Ci chodziło? > > skad wiesz ?:) > > poprostu zalozmy ze mam 3 wiersze > 1 muzyka 1 > 2 komputery 2 > 3 rosliny 3 > > chce takie cos: > 1 muzyka 1 > 2 komputery 2 > 3 rosliny 1 > 3 rosliny 2 > > czyli jak masz ta 3 kolumne wartosc 3, to zeby tak jakby 2 razy > wyswietlil ten sam wiersz, a dodatkowo zeby zamienial ta trojke na 1 i 2 > (w drugim wierszu - tym powtorzonym) >
po prosstu dodaje sobie tabelę translacji z danymi:
rodzaj |rodzaj2 1|1 2|2 3|1 3|2
i robisz SELECT uid,nawa,rodzaj2 FROM trenslacje LEFT JOIN tab USING(rodzaj)
pBT > pozdrawiam
-- Używam klienta poczty Opera Mail: http://www.opera.com/mail/
Paweł Matejski - 12-11-2006 01:30
sd wrote: > > poprostu zalozmy ze mam 3 wiersze > 1 muzyka 1 > 2 komputery 2 > 3 rosliny 3 > > chce takie cos: > 1 muzyka 1 > 2 komputery 2 > 3 rosliny 1 > 3 rosliny 2 > > czyli jak masz ta 3 kolumne wartosc 3, to zeby tak jakby 2 razy > wyswietlil ten sam wiersz, a dodatkowo zeby zamienial ta trojke na 1 i 2 > (w drugim wierszu - tym powtorzonym)
No właśnie union all użyj. W pierwszym selecie wybierz wszystkie rekordy z typem rożnym od 3, a w dwóch następnych z typem = 3.
-- P.M.
sd - 12-11-2006 01:30
Paweł Matejski napisał(a):
> No właśnie union all użyj. W pierwszym selecie wybierz wszystkie rekordy z typem > rożnym od 3, a w dwóch następnych z typem = 3.
wlasnie o ten ALL chodzilo:) dzieki bardzo
pozdrawiam
sd - 12-11-2006 01:30
Wojtek pBT napisał(a):
> po prosstu dodaje sobie tabelę translacji z danymi: > > rodzaj |rodzaj2 > 1|1 > 2|2 > 3|1 > 3|2 > > i robisz > SELECT uid,nawa,rodzaj2 FROM trenslacje LEFT JOIN tab USING(rodzaj)
ciekawy sposob:) hmmm, ale ile tych wierszy ma byc w tej tabeli? tyle ile mam tych towarow? to troche malo elastyczne, no chyba ze nie rozumiem.
dzieki
pozdrawiam
Wojtek pBT (prac) - 12-11-2006 01:30
sd napisał(a): > Wojtek pBT napisał(a): > >> po prosstu dodaje sobie tabelę translacji z danymi: >> >> rodzaj |rodzaj2 >> 1|1 >> 2|2 >> 3|1 >> 3|2 >> >> i robisz >> SELECT uid,nawa,rodzaj2 FROM trenslacje LEFT JOIN tab USING(rodzaj) > > ciekawy sposob:) > hmmm, ale ile tych wierszy ma byc w tej tabeli? tyle ile mam tych towarow? > to troche malo elastyczne, no chyba ze nie rozumiem.
Dużo bardziej elastyczne niż za każdym razem przerabiać zapytaniaz UNION po dodaniu warunku.
Nie, to jest dla wszystkich wierszy z rodzajem 1,2,3 (tylko tyle ile masz rodzajów tłumaczonych 1=> 1, 2=>2, 3=>1 && 3=>2)
Jeżeli rodzaj 3 będzie występował stosunkowo rzadko, a będzieszmiał jeszcze 4-100 "normalnych" rodzajów to zrób tak:
rodzaj |rodzaj2 3|1 3|2
SELECT uid,nawa,tab.rodzaj FROM trenslacje LEFT JOIN tab USING(rodzaj) WHERE ISNULL(rodzaj2) UNION SELECT uid,nawa,rodzaj2 FROM trenslacje LEFT JOIN tab USING(rodzaj) WHERE NOT ISNULL(rodzaj2)
ps.: pisało sie ISNULL a nie IS NULL?...
pBT
> > dzieki > > pozdrawiam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.plnocnerozmowy.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 |
|