Co z tym oracle-m?
Marcin Dębicki - 28-03-2007 00:08
Co z tym oracle-m?
Na początek utwórzmy sobie dwie tabelki:
Kod:
CREATE TABLE master ( id INT ); ALTER TABLE master ADD PRIMARY KEY (id);
CREATE TABLE slave ( id INT, id_master INT ); ALTER TABLE slave ADD PRIMARY KEY (id); ALTER TABLE slave ADD CONSTRAINT slave_id_master FOREIGN KEY (id_master) REFERENCES master(id);
INSERT INTO master VALUES(1); INSERT INTO master VALUES(2); INSERT INTO master VALUES(3);
INSERT INTO slave VALUES (1, 1); INSERT INTO slave VALUES (2, 1);
A teraz prosty selekcik:
Kod:
SELECT DISTINCT m.id FROM master m, slave s WHERE m.id = s.id(+) ORDER BY s.id;
I mamy: ORA-01791: to nie jest wyrażenie z SELECT
Usuniecie z klauzury DISTINCTa powoduje, że zapytanie się wykonuje, czyli:
Kod:
SELECT m.id FROM master m, slave s WHERE m.id = s.id(+) ORDER BY s.id;
Również jeśli dodam kolumnę po której wykonuję sortowanie zapytanie wykonuje się prawidłowo:
Kod:
SELECT DISTINCT m.id, s.id FROM master m, slave s WHERE m.id = s.id(+) ORDER BY s.id
Więc w sumie można by tak:
Kod:
SELECT id FROM ( SELECT DISTINCT m.id, s.id AS s_id FROM master m, slave s WHERE m.id = s.id(+) ORDER BY s.id);
Tylko proszę... - nie gdybajcie, że i tak ten DISTINCT nie jest potrzebny, przykład został stworzony na potrzeby tego postu i obrazuje w pełni problem przed którym stanąłem. Nie piszcie też, że skoro znam rozwiązanie to szukam tylko dziury w całym (bo hibernate sobie po prostu z takim czymś nie radzi).
Jakieś pomysły?
pozdrawiam
Marcin
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 28-03-2007 00:08
Marcin Dębicki wrote: > SELECT DISTINCT > m.id > FROM > master m, > slave s > WHERE > m.id = s.id(+) > ORDER BY > s.id;
http://download-uk.oracle.com/docs/c...2.htm#i2171079
Restrictions on the ORDER BY Clause
The following restrictions apply to the ORDER BY clause:
* If you have specified the DISTINCT operator in this statement, then this clause cannot refer to columns unless they appear in the select list. (...)
Po prostu tak ma i już.
-- Michał Kuratczyk
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?=
Oracle 19g +Insert +Insert +Insert...
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
zanotowane.pldoc.pisz.plpdf.pisz.plponland.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 |
|