filtrowanie kolumn
Doker - 09-09-2007 00:04
filtrowanie kolumn
Chcialbym w MSSQL wykonac cos co mozna by opisac pseudokodem w taki sposob:
SELECT (Parse_Columns( SELECT Uprawnienia FROM Uprawnienia_Jednostki_Pytajacej WHERE id_jednostki = @id_jednostki)) FROM Dane_Personalne WHERE pesel = @pesel
Jakies pomysly?
Marcin A. Guzowski - 09-09-2007 00:04
Doker wrote: > Chcialbym w MSSQL wykonac cos co mozna by opisac pseudokodem w taki sposob: > > SELECT > (Parse_Columns( > SELECT Uprawnienia > FROM Uprawnienia_Jednostki_Pytajacej > WHERE id_jednostki = @id_jednostki)) > FROM Dane_Personalne > WHERE pesel = @pesel > > Jakies pomysly?
Czyli chcesz uzyskać różny zestaw kolumn ustalany na podstawie identyfikatora jednostki w konfigurowalny sposób? (nie prościej napisać to jednym zdaniem? pseudokodem ilustruje się działanie algorytmu, a ten nie ma szans działać w taki sposób, jak napisałeś).
Rozwiązania są teoretycznie 3: 1. procedura 2. funkcja tabelaryczna 3. widok (da się, ale będzie to rzeźba)
W praktyce zadanie sprowadza się to napisania odpowiedniej procedury (ewentualnie funkcji tabelarycznej). W przypadku procedury, można to zrobić z użyciem dynamicznego SQLa (duża elastyczność i konfigurowalność, ale mniejsze bezpieczeństwo i m.in. wymagane nadawanie uprawnień dla wykonującego procedurę do wszystkich obiektów wykorzystywanych w dynamicznym SQLu, a nie tylko do samej procedury) lub bez niego (mniejsza elastyczność rozwiązania, ale większe bezpieczeństwo i wygoda w aspekcie uprawnień). Jak zawsze trzeba znaleźć kompromis dopasowany do swoich potrzeb.
Niezależnie od sposobu implementacji, autoryzację możesz oprzeć na podstawie zadeklarowanego parametru (jawnie przekazanego @id_jednostki) lub na podstawie kontekstu wywołania (SUSER_SNAME() itd.) lub w oparciu o mapowanie jednego z drugim.
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?=
[mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?=
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
[ORACLE] Dodanie kolumny typu BLOB - =?ISO-8859-2?Q?wp=B3yw_na?==?ISO-8859-2?Q?_wydajno=B6c?=
=?ISO-8859-2?Q?=5BORACLE=2C_ORDER_BY=5D_Czy_indeksowane_?==?I SO-8859-2?Q?kolumny_przy=B6piesz=B1_sortowanie=3F?=
pytanie o zapytanie z having count = count z innej kolumny
[MySQL/PHP] Wyszukiwanie rekordu przez kolumnę wskazaną przez zmienną
=?iso-8859-2?q?Pytanie_SQL__spe=B3niaj=B1ce_wiecej_jak_jeden_ warunek_na_jednej_kolumnie=2E?=
=?iso-8859-2?Q?=5BMSSQL2005=5D_Zawarto=B6c_kolumny_varbinary= 28max=29_?=
SELECT MAX(nazwaPola) FROM tabela WHERE .... i ORA-01405: pobran? warto?ci? kolumny jest NULL
zanotowane.pldoc.pisz.plpdf.pisz.ploefg.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 |
|