|
OpenOffice 3.2 base, косяк с запросами | ☑ | ||
---|---|---|---|---|
0
Sakura
23.06.12
✎
14:19
|
Пишу курсовик по БД, для облегчения жизни решила воспользоваться OpenOffice Base, как аналогом Аксесса, который рекомендован преподом.
И внезапно полшучилась проблема с запросами - те, которые делаю через мастер, отрабатывают как надо, но мастер не умеет делать сложные - вложенные и соединениями. Их написала на чистом SQL, все корректно, проверили тест запроса несколько раз, но при попытке выполнить выдается ошибка, в одном запросе - не может найти столбец таблицы, хотя он есть, в другом - ошибка при группировке. В чем может быть проблема? Переписать на мускуле - вариант, но самый последний. Хочется добить именно на ОО. |
|||
1
Sakura
23.06.12
✎
14:38
|
Пример: текст запроса на вычисление прибыли от завершенных проектов:
SELECT "Pr_code", "Pr_name", "finished", "finish", SUM( "Summ" ) FROM "Project" WHERE ( "finished" = True ) GROUP BY "Pr_code" Кавычки так и должны быть, это требование синтаксиса Опенофиса |
|||
2
Jaap Vduul
23.06.12
✎
14:43
|
(1) С точки зрения sql запрос косячный.
|
|||
3
Ненавижу 1С
гуру
23.06.12
✎
14:45
|
SELECT "Pr_code", "Pr_name", "finished", "finish", SUM( "Summ" ) FROM "Project" WHERE ( "finished" = True ) GROUP BY "Pr_code", "Pr_name", "finished", "finish"
|
|||
4
Sakura
23.06.12
✎
14:48
|
(3) спасибо, сработало. но не суммирует прибыль от стоимости проектов
|
|||
5
Шурик71
23.06.12
✎
14:52
|
и не должно суммировать
|
|||
6
Sakura
23.06.12
✎
14:56
|
(5) Хм. А как тогда сделать, чтоб суммировало?
|
|||
7
Шурик71
23.06.12
✎
14:56
|
в запросе написано "вычислить сумму по каждому законченному проекту"
|
|||
8
Шурик71
23.06.12
✎
14:57
|
(6) что нужно получить то? добавить итоговую строку? или что? и какая субд?
|
|||
9
Sakura
23.06.12
✎
14:58
|
СУБД - встроенная опенофисовская
да, итоговая нужна, с общей прибылью от всех проектов |
|||
10
Шурик71
23.06.12
✎
15:01
|
под рукой нет
проверь COMPUTE() |
|||
11
Sakura
23.06.12
✎
15:03
|
не-а, не знает такой команды
|
|||
12
Шурик71
23.06.12
✎
15:03
|
или к group by добавить With Rollup
|
|||
13
Sakura
23.06.12
✎
15:04
|
(12) тоже не умеет, сцука
|
|||
14
Шурик71
23.06.12
✎
15:05
|
просто груп бай выполняет свертку по указанным полям
|
|||
15
Шурик71
23.06.12
✎
15:06
|
если начего не умеет, тогда итоговый sum() и union к твоему запросу
|
|||
16
Sakura
23.06.12
✎
15:08
|
(15) т.е. после текста из (3) вставить union Sum ( "summ" ) так?
|
|||
17
Шурик71
23.06.12
✎
15:10
|
[твой текст]
union SELECT null, null, null, null, SUM( "Summ" ) FROM "Project" WHERE ( "finished" = True ) |
|||
18
Sakura
23.06.12
✎
15:14
|
(17) the given command is not a SELECT statement.
only queries are allowed |
|||
19
Sakura
23.06.12
✎
15:17
|
похоже, union, как и left join, эта зараза делать не умеет.
печально. |
|||
20
Sakura
23.06.12
✎
15:48
|
а можно как-то без union это дело переписать?
|
|||
21
izekia
23.06.12
✎
15:55
|
дока никак не читается?
http://hsqldb.org/doc/2.0/guide/sql-ind.html |
|||
22
Sakura
23.06.12
✎
15:56
|
(21) увы, английский у меня нулевой
пару лет назад делала простенькую БД в опенофисе, не было таких проблем О_о |
|||
23
izekia
23.06.12
✎
15:56
|
left outer join наверное надо писать
|
|||
24
izekia
23.06.12
✎
15:57
|
(22) как же так, без английского сложно
примеры там есть, посмотри |
|||
25
izekia
23.06.12
✎
15:57
|
union точно есть
|
|||
26
Sakura
23.06.12
✎
15:58
|
вот еще более простой запрос, был с лефт джойном, убрали
SELECT * FROM "sotr", "Otd" WHERE ( "sotr.otdel" = "Otd.Otdel" ) AND ( "Otd.code_n" = "sotr.Code" ) ругается, что столбец sotr.otdel не найден. он точно есть, пишется именно так. |
|||
27
izekia
23.06.12
✎
16:02
|
http://www.hsqldb.org/doc/1.8/guide/ch09.html#select-section
вот про селект |
|||
28
izekia
23.06.12
✎
16:03
|
а не так надо "sotr"."otdel" ?
|
|||
29
izekia
23.06.12
✎
16:06
|
по синтаксису точно надо писать left outer join
table [{CROSS | INNER | LEFT OUTER | RIGHT OUTER} JOIN table ON Expression] [, ...] |
|||
30
izekia
23.06.12
✎
16:07
|
ну и union должен работать
показывай текст запроса с объединением, который не работает |
|||
31
izekia
23.06.12
✎
16:11
|
да, кстати в кавычках надо писать отдельно имя таблицы и соответственно отдельно имя поля
то есть надо как в (28) тогда ругаться не будет, ну если соответственно все остальные поля поправишь |
|||
32
Torquader
23.06.12
✎
21:59
|
А что не судьба сделать два запроса - сначала по проектам, а потом общую сумму - вы пытаетесь два запроса запихать в один, но серверу-то всё равно два исполнять.
Ещё один вариант - просуммировать все колонки на этапе вывода (вроде бы в access-е была команда, которая это умеет). |
|||
33
smaharbA
23.06.12
✎
22:03
|
нахера ооо для работы с сапросами ?
|
|||
34
andrewks
23.06.12
✎
22:11
|
(9)
SELECT SUM( "Summ" ) FROM "Project" WHERE ( "finished" = True ) |
|||
35
Sakura
23.06.12
✎
22:31
|
(32) Скажи как это сделать
(33) аксесса нет и не будет, а нужны еще и формы и прочие красявости. рисовать на сях времени нет уже, надо быстро и просто (34) спс, попробую, но уже не сегодня |
|||
36
andrewks
23.06.12
✎
22:33
|
(35) 1. в (17) всё сказали уже
|
|||
37
Sakura
23.06.12
✎
22:35
|
(36) я ж ответила, юнион не работает
|
|||
38
andrewks
23.06.12
✎
22:36
|
(26) "ругается, что столбец sotr.otdel не найден. он точно есть, пишется именно так." может, он не otdel, а Otdel, например?
|
|||
39
andrewks
23.06.12
✎
22:36
|
(37) не может быть
|
|||
40
andrewks
23.06.12
✎
22:37
|
SELECT null, null, null, null, SUM( "Summ" ) FROM "Project" WHERE ( "finished" = True ) GROUP BY null, null, null, null
|
|||
41
andrewks
23.06.12
✎
22:41
|
и вообще, ОО уже 3.4, а LO даже 3.5
|
|||
42
Sakura
23.06.12
✎
23:44
|
(41) с репами ЛО косяк какой-то, не работают у меня, а ОО - какой встал по дефолту тот и юзаю, это резервная машина, пока основная ждет ремонта
|
|||
43
izekia
24.06.12
✎
11:18
|
а что, то что я написал никто не читает)
|
|||
44
Sakura
24.06.12
✎
16:05
|
(29) попробовала, не работает. сказала ж, ни юнион, ни соединения не рабботают, мать их
|
|||
45
andrewks
24.06.12
✎
18:05
|
||||
46
izekia
24.06.12
✎
20:05
|
(45) она писала про плохой английский
(44)где-то там нужно переключиться на "прямой sql" (direct sql) а (28) помогло? |
|||
47
Sakura
24.06.12
✎
20:10
|
(46) 3. не пробовала еще, не до того было
|
|||
48
izekia
24.06.12
✎
20:11
|
(47) ну просто в том посте я сомневался, сейчас уверен, что проблема именно в этом, посмотрел уже правильный синтаксис
|
|||
49
Asmody
24.06.12
✎
20:19
|
нет в base юнионов. а direct sql нужен при работе с внешними БД, чтобы запрос не ОО обрабатывал, а двиг БД
|
|||
50
Пеппи
24.06.12
✎
20:25
|
(49) в смысле нет юнионов в бейс? имеешь в виду ОО или ...?
|
|||
51
izekia
24.06.12
✎
20:26
|
(49) в base же hsqldb, он и будет обрабатывать, и об этом и написано по ссылке
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |