SQL - jak sformułować takie zapytanie:
Pawel - 13-11-2006 00:44
SQL - jak sformułować takie zapytanie:
Dla znanej liczby, wśród kolumn których nazwy są określone liczbami rosnącymi (to znaczy każda następna kolumna jest nazwana liczbą całkowitą większą od poprzedniej) wybrać tą kolumnę której nazwa jest liczbą większą od tej znanej liczby .. przy czym kolumna wczesniejsz jest liczbą mniejszą.
Słownie bardzo źle mi się to opisuje .. dlatego googla nie wiedzialem jak zapytać
na wszelki wypadek obrazek przedstawiający część tabeli: http://img209.imageshack.us/img209/9763/tabelapg0.jpg (91kB) Konkretnie chodzi mi np aby dla znanej liczby np 40 SQL wybral kolumne o nazwie 48 .. a dokladniej jeszcze wartość poniższą dla pewnego stringa który występuje w każdym wierszu (na obrazku niewidoczne)
Paweł Matejski - 13-11-2006 00:44
Pawel wrote: > Dla znanej liczby, wśród kolumn których nazwy są określone liczbami > rosnącymi (to znaczy każda następna kolumna jest nazwana liczbą > całkowitą większą od poprzedniej) wybrać tą kolumnę której nazwa jest > liczbą większą od tej znanej liczby .. przy czym kolumna wczesniejsz > jest liczbą mniejszą. > > Słownie bardzo źle mi się to opisuje .. dlatego googla nie wiedzialem > jak zapytać > > na wszelki wypadek obrazek przedstawiający część tabeli: > http://img209.imageshack.us/img209/9763/tabelapg0.jpg (91kB) > Konkretnie chodzi mi np aby dla znanej liczby np 40 SQL wybral kolumne o > nazwie 48 .. a dokladniej jeszcze wartość poniższą dla pewnego stringa > który występuje w każdym wierszu (na obrazku niewidoczne)
SQL jest od wybierania wierszy na podstawie wartości kolumn, nie ich nazw.
-- P.M.
Pawel - 13-11-2006 00:44
Paweł Matejski wrote: > > SQL jest od wybierania wierszy na podstawie wartości kolumn, nie ich nazw. >
Przyznam, że nie jestem doświadczonym "programistą" SQL .. czy to znaczy ze w tym przypadku pozostaje przebudowanie tabeli w jakiś inny sposób?
Ale skoro istnieja tabela bazy danych .. i ja ją logicznie potrafię w głowie "obrobić" to SQL nie będzie w stanie ?? ;)
mojeza - 13-11-2006 00:44
Pawel wrote: > Paweł Matejski wrote: > > > > SQL jest od wybierania wierszy na podstawie wartości kolumn, nie ich nazw. > > > > Przyznam, że nie jestem doświadczonym "programistą" SQL .. czy to znaczy > ze w tym przypadku pozostaje przebudowanie tabeli w jakiś inny sposób? > > Ale skoro istnieja tabela bazy danych .. i ja ją logicznie potrafię w > głowie "obrobić" to SQL nie będzie w stanie ?? ;)
Nie podajesz jakiej bazy uzywasz, np. w MS SQL Server mozna to zrobic tak:
USE Northwind
--SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Orders'
DECLARE @ColOrdPos int DECLARE @ColName varchar(256) DECLARE @Query varchar(4000)
SELECT @ColOrdPos = ORDINAL_POSITION + 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Orders' AND COLUMN_NAME = 'ShipCountry' ORDER BY ORDINAL_POSITION
SELECT @ColName = COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Orders' AND ORDINAL_POSITION = @ColOrdPos
--SELECT @ColName
IF @ColName IS NOT NULL BEGIN SET @Query = 'SELECT ShipCity, ' + @ColName + ' FROM Orders WHERE ShipCity = ''Rio de Janeiro''' EXEC(@Query) END ELSE SELECT NULL, NULL
Maseł - 13-11-2006 00:44
mojeza wrote: > Pawel wrote: >> Paweł Matejski wrote: >>> SQL jest od wybierania wierszy na podstawie wartości kolumn, nie ich nazw. >>> >> Przyznam, że nie jestem doświadczonym "programistą" SQL .. czy to znaczy >> ze w tym przypadku pozostaje przebudowanie tabeli w jakiś inny sposób? >> >> Ale skoro istnieja tabela bazy danych .. i ja ją logicznie potrafię w >> głowie "obrobić" to SQL nie będzie w stanie ?? ;) > > Nie podajesz jakiej bazy uzywasz, np. w MS SQL Server mozna to zrobic > tak: > > USE Northwind [...]
A w Oracle to bym widzial zapytanie do slownika (perspektywy: User_tables, user_tab_columns), troche PL/SQLa i dynamiczny natywny SQL.
szkielet wygladalby tak
------- function zakrecone_zapytanie( numerek_do_wykonania in number) --tu bym dodal, ze jest pipelinowa i tabelaryczna, a co mi tam
begin
select min(column_name) into fajny_numerek from user_tab_columns where to_number(column_name) > numerek_do_wykonania and table_name = 'DZIWNA_TABELKA';
Execute immediate 'select ' || fajny_numerek || ' from dziwna_tabelka';
no_i_tu_bym_zwrocil_te_wiersze;
end; --------
Pomijajac fakt, ze ta 'Dziwna_tabelka' to bym jednak inaczej zamodelowal...
Pozdro
Maseł
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?_?=
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?=
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
[newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
zanotowane.pldoc.pisz.plpdf.pisz.pllunadance.htw.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 |
|