problem z pytaniem sql
no-name - 25-04-2006 00:02
problem z pytaniem sql
Witam. Mam problem s pytaniem sql i przyznam, ze utknalem. Sory za brak zawijania, ale inaczej to sie rozjezdza :(. Mam trzy bazy:
mysql> describe klient; +------------------+---------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------------------------+------+-----+---------+----------------+ | lp | int(11) | | PRI | NULL | auto_increment | | nazwa | mediumtext | YES | | NULL | | | adres | mediumtext | YES | | NULL | | | telefon | varchar(100) | YES | | NULL | | | mobile | varchar(100) | YES | | NULL | | | email | varchar(100) | YES | | NULL | | | aktywne | enum('tak','nie') | YES | | tak | | | uwagi | longtext | YES | | NULL | | | last_changes | int(11) | YES | | NULL | | | lokalizacja | int(11) | YES | | NULL | | | termin_platnosci | varchar(255) | | | | | | typ_platnosci | enum('przelew','gotowka') | | | przelew | | | kwota | varchar(255) | | | | | | dodano | varchar(255) | | | | | +------------------+---------------------------+------+-----+---------+----------------+
mysql> describe platnosci; +------------------+---------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------------------------+------+-----+---------+----------------+ | lp | int(11) | | PRI | NULL | auto_increment | | netto | float | | | 0 | | | za_okres | varchar(255) | | | | | | termin_platnosci | varchar(255) | | | | | | typ | enum('przelew','gotowka') | | | przelew | | | kwota | varchar(100) | | | 0 | | | faktura | enum('tak','nie') | | | nie | | | nr_faktury | varchar(255) | | | | | | klient_id | int(11) | | | 0 | | | wplacono | enum('tak','nie') | | | nie | | | data_wplaty | varchar(255) | | | | | +------------------+---------------------------+------+-----+---------+----------------+
mysql> describe klient; +------------------+---------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------------------------+------+-----+---------+----------------+ | lp | int(11) | | PRI | NULL | auto_increment | | nazwa | mediumtext | YES | | NULL | | | adres | mediumtext | YES | | NULL | | | telefon | varchar(100) | YES | | NULL | | | mobile | varchar(100) | YES | | NULL | | | email | varchar(100) | YES | | NULL | | | aktywne | enum('tak','nie') | YES | | tak | | | uwagi | longtext | YES | | NULL | | | last_changes | int(11) | YES | | NULL | | | lokalizacja | int(11) | YES | | NULL | | | termin_platnosci | varchar(255) | | | | | | typ_platnosci | enum('przelew','gotowka') | | | przelew | | | kwota | varchar(255) | | | | | | dodano | varchar(255) | | | | | +------------------+---------------------------+------+-----+---------+----------------+ I pytanie: select k.lp, k.nazwa, k.aktywne, l.nazwa, p.wplacono from klient k, platnosci p left join lokalizacje l on (k.lokalizacja=l.lp) where p.za_okres='2006.04' and p.klient_id=k.lp order by k.nazwa asc
Moze byc ono modyfikowane tak, aby mozna bylo sortowac po dowolnej kolumnie. Problem jest taki, że jezeli jest dodany klient, który nie posiada swojej wplaty za dany miesiąc (pole za_okres w tabeli platnosci) nie jest on wybierany. Jak zmodyfikowac to pytanie, zeby byl on na liscie wynikow? Z gory dzieki za kazda podpowiedz, bo juz nie mam pomyslu, a dzien wybitnie nie moj :(. -- Miq
Rafalsxat - 25-04-2006 00:02
----- Original Message ----- From: "no-name" <michal@linuxstuff.pl> To: <pl-comp-bazy-danych@newsgate.pl> Sent: Monday, April 24, 2006 1:36 PM Subject: problem z pytaniem sql > select k.lp, k.nazwa, k.aktywne, l.nazwa, p.wplacono from klient k, > platnosci p left join lokalizacje l on (k.lokalizacja=l.lp) where > p.za_okres='2006.04' and p.klient_id=k.lp order by k.nazwa asc > Problem jest taki, że jezeli jest dodany klient, który nie posiada swojej > wplaty > za dany miesiąc (pole za_okres w tabeli platnosci) nie jest on wybierany. > Jak zmodyfikowac > to pytanie, zeby byl on na liscie wynikow? Z gory dzieki za kazda > podpowiedz, bo juz nie mam pomyslu, > a dzien wybitnie nie moj :(.
nie wglebialem sie ale tak cos klepne:
moze dodac jeszcze ( ...... OR p.za_okres IS NULL ) AND ??
pozdr rafal
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
- 25-04-2006 00:02
> I pytanie: > select k.lp, k.nazwa, k.aktywne, l.nazwa, p.wplacono from klient k, > platnosci p left join lokalizacje l on (k.lokalizacja=l.lp) where > p.za_okres='2006.04' and p.klient_id=k.lp order by k.nazwa asc >
select k.lp, k.nazwa, k.aktywne, l.nazwa, p.wplacono from klient k left join platnosci p on (k.lp = p.klient_i) left join lokalizacje l on (k.lokalizacja=l.lp) where p.za_okres='2006.04' order by k.nazwa asc
Tak bym to zrobil na MSSQLu, czy pojdzie na mySQLu tego nie wiem, ale chyba tak :-)
Alwik
no-name - 25-04-2006 00:02
Rafalsxat wrote:
> > ----- Original Message ----- > From: "no-name" <michal@linuxstuff.pl> > To: <pl-comp-bazy-danych@newsgate.pl> > Sent: Monday, April 24, 2006 1:36 PM > Subject: problem z pytaniem sql >> select k.lp, k.nazwa, k.aktywne, l.nazwa, p.wplacono from klient k, >> platnosci p left join lokalizacje l on (k.lokalizacja=l.lp) where >> p.za_okres='2006.04' and p.klient_id=k.lp order by k.nazwa asc >> Problem jest taki, że jezeli jest dodany klient, który nie posiada swojej >> wplaty >> za dany miesiąc (pole za_okres w tabeli platnosci) nie jest on wybierany. >> Jak zmodyfikowac >> to pytanie, zeby byl on na liscie wynikow? Z gory dzieki za kazda >> podpowiedz, bo juz nie mam pomyslu, >> a dzien wybitnie nie moj :(. > > nie wglebialem sie ale tak cos klepne: > > moze dodac jeszcze ( ...... OR p.za_okres IS NULL ) AND ??
Dziękuję za pomoc, rozwiązaniem sa Wasze obie odpowiedzi :)
select k.lp, k.nazwa, k.aktywne, l.nazwa, p.wplacono from klient k left join platnosci p on (k.lp = p.klient_id) left join lokalizacje l on (k.lokalizacja=l.lp) where p.za_okres='2006.04' or p.za_okres is null order by k.nazwa asc
-- Miq
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
[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?=
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
=?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
=?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?=
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.pladwokat.keep.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 |
|