[Mysql] zapytanie proste ?
BM - 17-06-2006 00:32
[Mysql] zapytanie proste ?
Witam serdecznie,
Niby problem wydaje sie prosty ale ja juz sie poddalem. Moze Wam sie uda wpasc na rozwiazanie - a moze nie ma rozwiazania.
Mam tabele:
------dyzury-------------- | ID | PRACO | DZIEN | | 1 | 1 | pon | | 2 | 1 | sro | | 3 | 1 | sob | | 4 | 2 | pon | | 5 | 2 | pia | | 6 | 3 | pon | | 7 | 3 | sob |
Probuje wymyslic zapytanie ktore zwroci mi numery pracownikow (PRACO) ktorzy maja dyzury w poniedzialki (DZIEN = pon) i w soboty (DZIEN = sob) Czyli w tym konkretnym przypadku jako wynik powinienem otrzymac 1 i 3
Jest to tylko przyklad "wiekszego" problemu takze tych warunkow (DZIEN = costam) moze byc o wiele wiecej.
Bardzo wazne ograniczenie - nie mozna korzystac z podzapytan.
Pozdrawiam
BM - 17-06-2006 00:32
> ------dyzury-------------- > | ID | PRACO | DZIEN | > | 1 | 1 | pon | > | 2 | 1 | sro | > | 3 | 1 | sob | > | 4 | 2 | pon | > | 5 | 2 | pia | > | 6 | 3 | pon | > | 7 | 3 | sob | > > Probuje wymyslic zapytanie ktore zwroci mi numery pracownikow (PRACO) > ktorzy maja dyzury w poniedzialki (DZIEN = pon) i w soboty (DZIEN = sob) > Czyli w tym konkretnym przypadku jako wynik powinienem otrzymac 1 i 3
No dobrze - z tym konkretnym przypadkiem udalo mi sie:
select * from dyzury d , dyzury d1 where d.dzien = 'pon' and d1.dzien = 'sob' and d.praco = d1.praco
Ale co jesli bede chcial wyswietlic wszystkich pracownikow ktorzy maja dyzury w pon, wto, srod, czw, pia ? Bedzie trzeba zrobi 5 zlaczen tej samej tabeli - chyba nie jest to optymalne rozwiazanie.
Pozdrawiam
Rafal sxat - 17-06-2006 00:32
> Ale co jesli bede chcial wyswietlic wszystkich pracownikow ktorzy maja > dyzury w pon, wto, srod, czw, pia ?
proponuje bazowac na datach i wtedy nie bedziesz mial z tym najmniejszych problemow
pozdr raf
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
BM - 17-06-2006 00:32
> proponuje bazowac na datach i wtedy nie bedziesz mial z tym najmniejszych > problemow
Ta tabelka to jest tylko przyklad wiekszego problemu - ta kolumna gdzie sa dni tygodnia w rzeczywistosci przechowuje INTy ktore stanowia referencje znowu do innej tabelki. Ale to nie istotne. Zastanawiam sie jak bedzie sie zachowywalo zlaczenie (tej samej tabeli kilkakrotnie) ktore stworzylem powyzej jezeli tabela dyzury sie "rozrosnie" ?
Pozdrawiam
hubert depesz lubaczewski - 17-06-2006 00:32
On 2006-06-16, BM <bartek_m@poczta.fm> wrote: > No dobrze - z tym konkretnym przypadkiem udalo mi sie:
ostatnio o tym pisałem. co prawda ja piszę w oparciu o postgresa, ale powinno ci też zadziałać pod mysql'em. jeden scan tabeli i masz dane. opis: http://www.depesz.com/index.php/2006...na-lista-cech/
depesz
-- http://www.depesz.com/ - nowy, lepszy depesz
=?ISO-8859-2?Q?Pawe=B3_Chalacis?= - 17-06-2006 00:32
On 2006-06-16 16:56:08 +0200, "BM" <bartek_m@poczta.fm> said:
> Jest to tylko przyklad "wiekszego" problemu takze tych warunkow (DZIEN > = costam) moze byc o wiele wiecej.
SELECT praco, count(praco) FROM dyzury where dzien in('pon', 'sro', 'sob') group by praco having count(praco) = 3
gdzie 3 to liczba dni uzytych w IN
-- Paweł Chalacis . . . . . . . . . . . . . . . . . . . . . ale o co chodzi? praca . . . . . . . . . . . . . . . . . . . . . . . . http://punktg.com.pl poza praca . . . . . . . . . . . . . . . . . . http://grek.punktg.com.pl auto reklama . . . . . . . . . . . . . . . . . . . . http://supersklep.pl
BM - 18-06-2006 00:44
> SELECT praco, count(praco) FROM dyzury where dzien in('pon', 'sro', 'sob') > group by praco having count(praco) = 3 > > gdzie 3 to liczba dni uzytych w IN
Wlasnie o to chodzilo ! za co pieknie dziekuje.
> Paweł Chalacis . . . . . . . . . . . . . . . . . . . . . ale o co chodzi?
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 - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
zanotowane.pldoc.pisz.plpdf.pisz.plchinska-zupka.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 |
|