[MSSQL 2000] ciekawe grupowanie danych
Krzysztof Wiśniewski - 19-11-2006 00:08
[MSSQL 2000] ciekawe grupowanie danych
Mam w tabeli t1 rekordy zawierające następujące pola:
- Lp (int) - IDGrupy (int) - Nazwa (string)
IDGrupy może zawierać wartości NULL lub wskazywać na grupę (wszystko jedno czego, przyjmijmy, że grupę rekordów).
W tabeli t2 mam słownik tych grup: - ID - Nazwa
Załóżmy, że mam procedurę, która zwraca mi rekordy z pierwszej tabeli:
SELECT CASE IsNull(IDGrupy, 0) WHEN 0 THEN Nazwa ELSE ' '+ Nazwa END AS Nazwa FROM t1 ORDER BY IsNull(IDGrupy, 1000), Lp;
Zastanawiam się - w jaki sposób mogę dodatkowo zwrócić wiersze, wskazujące na nazwy grup, do których należą rekordy?
Czyli chciałbym osiągnąć coś takiego:
--------------------- Grupa numer 1 --------------------- Rekord 1 --------------------- Rekord 2 --------------------- Grupa numer 2 --------------------- Rekord 3 --------------------- Rekord 4 --------------------- Rekord 5 ---------------------
Jakieś sugestie, jak się za to zabrać?
Pozdrawiam, Krzysiek
Marcin A. Guzowski - 19-11-2006 00:08
Krzysztof Wiśniewski napisał(a): > Mam w tabeli t1 rekordy zawierające następujące pola: >(..) > Jakieś sugestie, jak się za to zabrać?
SELECT Nazwa FROM ( SELECT IDGrupy, LP, CASE IsNull(IDGrupy, 0) WHEN 0 THEN Nazwa ELSE ' '+ Nazwa END AS Nazwa FROM t1 UNION SELECT ID,0,Nazwa FROM t2 ) x
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
Marcin A. Guzowski - 19-11-2006 00:08
> SELECT Nazwa > FROM > ( > SELECT > IDGrupy, > LP, > CASE IsNull(IDGrupy, 0) > WHEN 0 THEN Nazwa > ELSE ' '+ Nazwa > END AS Nazwa > FROM t1 > UNION > SELECT ID,0,Nazwa FROM t2 > ) x
Acha i jeszcze jedno: w powyższym zapytaniu specjalnie nie dałem sortowania, gdyż robi to automatycznie operator UNION. Warto jednak dodać do zapytania nadrzędnego:
ORDER BY x.IdGrupy, x.LP
żeby mieć spokojną głowę, jeżeli SQL Serverowi nagle zachce się np. stosować algorytm hash union (wtedy z sortowania nici).
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[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?=
=?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?=
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
[laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?=
Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
[MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plshutter.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 |
|