|
|
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Hello, Prosu proshenia za translit. Ne mogu reshiti problemu s sql zaprosom, rabotaiushim na ms sql servere, no vidaiushim oshibku na oracle (8i). V zaprose ispolizuetsea vlojennii select zapros sviazannii s glavnim po znaceniu nekotorih polei: select A.ID, (select Max(B.SomeField) from B where B.ID=A.ID) as Test from A Oracle vidaet oshibku: (select max(B.SomeField) * ERROR at line 4: ORA-00979: not a GROUP BY expression Vkliucenie group by A.ID ne pomogaet. V cem tut problema? Spasibo. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 14:34 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
во вложенном запросе выбирается только 1 поле ( max() ) или просто запрос сокращен для наглядности ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 14:53 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
1 pole - max. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 15:03 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Bila dopusena malenikaia netocinosti. Visheupomeanutaia query rabotaet. No, esli pomimo nested query esti drugie aggragatnie functsii, vidaetsea oshibka. primer zaprosa: select A.ID, Max(A.Field), (select Max(B.SomeField) from B where B.ID=A.ID) as T from A group by A.ID Oracle vidaet oshibku: (select max(B.SomeField) * ERROR at line 4: ORA-00979: not a GROUP BY expression Pole T ne mogu dobaviti v group by - vidaet oshibku invalid column name. Cito delati? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 15:25 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Попробуй : select c.id,c.t,c.FIELD from ( select A.ID,A.Field, (select Max(B.SomeField) from B where B.ID=A.ID) as T from A ) c group by c.ID, c.T ,c.FIELD в селект можно указывать те поля, по которым делается группировка (явно, не в агрег. функциях) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 15:30 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Inline-query Oracle стал поддерживать с версии 8i, если не ошибаюсь. Можешь переписать свой запрос: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 15:33 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Idea interesnaia, no zameti cito v etom sluchae ne vipolniaetsea Max(A.Field)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 15:38 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Ese odin minus etogo metoda - outer joins v oracle baziruiutsea na odnom pole/tablitse. Dlea outer joins osnovannih na neskolikih tablitsah rabotati ne budet. Naprimer: select a.id , max(b.somefield) from a, b, c where a.id = b.id (+) and c.c_id=b.c_id(+) group by a.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 15:41 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Не понял, где тебе требуется Max(A.Field)? По крайней мере в первом вопросе он не упоминался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 15:45 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
"select c.id,c.t,c.FIELD from ( select A.ID,A.Field, (select Max(B.SomeField) from B where B.ID=A.ID) as T from A ) c group by c.ID, c.T ,c.FIELD " Мне кажется эта порочная практика использовать запрос в списке столбцов скоро вообще разучит народ писать правильные запросы. Уже не в впервый раз замечаю в последнее время подобные запросы. Такое ощущение, что народ сразу садиться на 9i с ничего или оттуда где это уже давно используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 16:01 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Ispol'zui OVER PARTITION clause... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 16:19 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Privet Softbuilder. Pocemu porocinaia? Inogda eto edinstvennii vihod. Oracle k sojaleniu, buduci liderom na db rinke, ne podderjivaet prostie veshi (takie kak OUTER JOIN po neskolikim poliam i tablitsam). I ne vsegda esti vozmojnosti pisati stored procedures (sistemnie trebovania, ponimaesh). Vot i prihoditsea vikrucivatisea. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 17:29 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Pomogite togda napisati sleduiushii zapros pravilino: Dlea tablits a i b vivoditsea maximum polea iz tablitsi c, a takje maximum polea iz tablitsi d sviazannoi s a i b po nekotorim poleam, ili null esli ne sushestvuiet sviazannih zapisei v tablitse d. select a.id, b.id, max(c.value), (select max(d.value) from d where d.a_id=a.id and d.b_id=b.id) from a, b, where a.some_field=b.another_field and c.a_id=a.id group by a.id, b.id Kak takoe napisati pravilino? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 17:38 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
create table a(id number, some_field varchar2(100)); create table b(id number, another_field varchar2(100)); create table c(id number,val number); select a.id, b.id, max(max_c) , max(max_c) from a, b, (select d.id, d.val max_c from d ) c where a.some_field=b.another_field and c.id=a.id and c.id=b.id group by a.id, b.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 17:47 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
to sdba7: это для исходного запроса. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Чем плох этот запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 17:54 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Hi Xpert, Vash zapros ne javliaetsea vneshnim soedineniem. V etom to i problema - mne nujen OUTER JOIN po dvum poliam iz raznih tablits... a Oracle eto nevozmojno. Cito to vrode etoi query: select a.id, b.id, max(max_c) , max(max_c) from a, b, (select d.id, d.val max_c from d ) c where a.some_field=b.another_field and c.id=a.id(+) and c.id=b.id(+) group by a.id, b.id Naskoliko ja znaiu oracle ne vipolnit etot zapros... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 17:54 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
To softbuilder: Da, zapros neploh (dlea ishodnogo). A cito je delati v vtorom sluchae - outer join po neskolikim tablitsam i poliam? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 17:57 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
А вот этот запрос я не понял. Есть ссылка на c, но где она from ? Код: plaintext 1. 2. 3. 4. 5. Изложи задачу точнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 17:59 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Horosho, poprobuiu ese raz: Esti cetire tablitsi A, B, C , D. 1) vivesti Max(C.Value) sgrupirovav po A.ID i B.ID 2) vivesti Max(D.Value) dlea zapisei sviazannih s A.ID i B.ID, ili NULL, esli takih zapisei net -> t.e. eto OUTER JOIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 18:17 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
select a.id, b.id, max(max_c) , max(max_c) from a, b, (select d.id, d.val max_c from d ) c where a.some_field=b.another_field and c.id=a.id(+) and c.id=b.id(+) group by a.id, b.id rabotaet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 19:57 |
|
||
|
Correlated nested sql query in select statement
|
|||
|---|---|---|---|
|
#18+
Xpert, Ja navernoe opecatku dopustil. Tvoi primer rabotaet, a s etim usloviem (dve tablitsi k odnoi) rabotati ne budet: where a.a_id=c.a_id(+) and b.b_id=c.b_id(+) V etom sluchae odna tablitsa (c) ucastvuet vo vneshnem soedinenii s a i b (dve tablitsi). Takoe rabotati ne budet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2003, 20:02 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32110923&tid=1991703]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 429ms |

| 0 / 0 |
