ďťż
 
Co z tym oracle-m? ďťż
 
Co z tym oracle-m?
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

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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com