| 
    
        
     
     | 
    
    
  | 
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, он и будет обрабатывать, и об этом и написано по ссылке     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |