ďťż
 
[MSSQL 2000] ciekawe grupowanie danych ďťż
 
[MSSQL 2000] ciekawe grupowanie danych
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shutter.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com