Kolejne pytanie o zapytanie - czy sie da?
BH - 17-06-2007 00:17
Kolejne pytanie o zapytanie - czy sie da?
Witam Sorry za lawine pytan ale nie zajmuje sie na codzien bazami :( Mam tabele dzialow m.in. z polami: dzial_id, dzial_nazwa, dzial_czy_sekcja (t/n), dzial_sek_id_dzial (tutaj jest wpisany zawartosc pola dzial_id). Wypisuje dzialy w php w petli segregujac po nazwie dzialu. No i teraz problem potrzebuje kolejnosci: Dzial - np. ksiegowosci o jakims ID ale zeby pod nim dalo sie pokazac sekcje dzialu ksiegowosci. Te sekcje maja w polu dzial_sek_id_dzial wpisany ID dzialu ksiegowosci, a w polu dzial_czy_sekcja znak 't'. Czy da sie to zalatwic jednym zapytaniem zeby nie komplikowac petli kolejnym sprawdzaniem?
Bogdan
Marcin Miga - 17-06-2007 00:17
On 31 Maj, 13:31, BH <bh@wytnijto_sih.pl> wrote: > Witam > Sorry za lawine pytan ale nie zajmuje sie na codzien bazami :( > Mam tabele dzialow m.in. z polami: dzial_id, dzial_nazwa, dzial_czy_sekcja > (t/n), dzial_sek_id_dzial (tutaj jest wpisany zawartosc pola dzial_id). > Wypisuje dzialy w php w petli segregujac po nazwie dzialu. > No i teraz problem potrzebuje kolejnosci: > Dzial - np. ksiegowosci o jakims ID ale zeby pod nim dalo sie pokazac sekcje > dzialu ksiegowosci. Te sekcje maja w polu dzial_sek_id_dzial wpisany ID > dzialu ksiegowosci, a w polu dzial_czy_sekcja znak 't'. > Czy da sie to zalatwic jednym zapytaniem zeby nie komplikowac petli kolejnym > sprawdzaniem? > > Bogdan
da si?. Tu powinna si? moja wypowied? sko?czy?... /* CREATE TABLE dzialy(dzial_id int NOT NULL, dzial_nazwa varchar(20) NOT NULL, dzial_czy_sekcja char(1) NULL CONSTRAINT DEF_dzial DEFAULT 't', dzial_sek_id_dzial int NULL)
INSERT INTO dzialy VALUES(1, 'ksiegowosc', NULL, NULL) INSERT INTO dzialy VALUES(2, 'produkcja', NULL, NULL) INSERT INTO dzialy VALUES(3, 'kierownictwo', NULL, NULL)
INSERT INTO dzialy VALUES(11, 'ksiegowosc ST', 't', 1) INSERT INTO dzialy VALUES(12, 'ksiegowosc FK', 't', 1) INSERT INTO dzialy VALUES(13, 'ksiegowosc KP', 't', 1)
INSERT INTO dzialy VALUES(21, 'produkcja betonu', 't', 2) INSERT INTO dzialy VALUES(22, 'produkcja stali', 't', 2)
INSERT INTO dzialy VALUES(31, 'sekretariat', 't', 3) */
SELECT * FROM dzialy ORDER BY isnull(dzial_sek_id_dzial, dzial_id), dzial_id
pozdrawiaMM
BH - 17-06-2007 00:17
Marcin Miga wrote:
> SELECT ** FROM dzialy ORDER BY *isnull(dzial_sek_id_dzial, dzial_id), > dzial_id Dziekuje ale z moja struktura bazy to nie dziala. Mam taka tabele: dzial_id integer NOT NULL nextval(('"dzial_dzial_id_seq"'::text)::regclass)
dzial_naz character varying(50) dzial_kier character varying(60) dzial_tel character varying(25) dzial_typ character varying(2) dzial_zadania text dzial_akt character varying(1) dzial_nazd character varying(500) dzial_data time with time zone dzial_redaktor integer dzial_datax timestamp with time zone dzial_fax character varying(25) dzial_email character varying(50) dzial_sek_id_dzial integer 0 (domyslnie) dzial_czy_sekcja character(1)
Czyli NOT NULL jest tylko w dzial_id.
Bogdan
Marcin Miga - 17-06-2007 00:17
On 1 Cze, 09:21, BH <bh@wytnijto_sih.pl> wrote: > Dziekuje ale z moja struktura bazy to nie dziala. > Mam taka tabele: > dzial_id integer NOT NULL > nextval(('"dzial_dzial_id_seq"'::text)::regclass) > > dzial_naz character varying(50) > dzial_kier character varying(60) > dzial_tel character varying(25) > dzial_typ character varying(2) > dzial_zadania text > dzial_akt character varying(1) > dzial_nazd character varying(500) > dzial_data time with time zone > dzial_redaktor integer > dzial_datax timestamp with time zone > dzial_fax character varying(25) > dzial_email character varying(50) > dzial_sek_id_dzial integer 0 (domyslnie) > dzial_czy_sekcja character(1) > > Czyli NOT NULL jest tylko w dzial_id. >
To daj jeszcze próbk? danych i spodziewany wynik. Ew. mo?esz sam pokombinowa? z zamian?: isnull(dzial_sek_id_dzial, dzial_id), dzial_id na: case when dzial_czy_sekcja = 't' then dzial_id else dzial_sek_id_dzial end, dzial_id (lub cos w tym guscie - pisane bezposrednio tu, bez sprawdzania)
pozdrawiaMM
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
=?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?=
[ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?=
phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?=
[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 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?=
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?=
[MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?=
mecze sie i mecze i nic - zapytanie czesciowe
zanotowane.pldoc.pisz.plpdf.pisz.planette.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 |
|