Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Итог по части значения / 25 сообщений из 30, страница 1 из 2
28.03.2004, 09:49
    #32459749
s@a
s@a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Здраствуйте господа.
Есть Interbase таблица Tab1, в ней два поля:
- Field1 VARCHAR(5);
- Field2 DOUBLE PRECISION;
Таблица имеет такие значения:
Field 1 I Field 2
21001 I 80.35
21002 I 140.12
18003 I 800.02
18005 I 30.12
18003 I 14.20
... I ...
Можно-ли написать запрос, что бы на выходе получить:

kod2 I S_sum
21 I 220.47
18 I 844.34
... I ...
...
Рейтинг: 0 / 0
28.03.2004, 10:29
    #32459754
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Код: plaintext
1.
2.
3.
SELECT SUBSTRING(TAB1.FIELD1 from  1  for  2 ), SUM(TAB1.FIELD2)
FROM TAB1
GROUP BY  1 

Firebird 1.5
...
Рейтинг: 0 / 0
28.03.2004, 14:33
    #32459823
s@a
s@a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
В Interbase получается вот

Select Substr(Field1,1,2), sum(Field2)
from Tab1
group by Field1


но этот запрос выбирает:
Field 1 I Field 2
21 I 80.35
21 I 140.12
18 I 814.22
18 I 30.12

а нужно :
Field 1 I Field 2
21 I 220.47
18 I 844.34
...
Рейтинг: 0 / 0
28.03.2004, 15:08
    #32459829
Andrew Kruchinin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Написали же:
Group By 1
...
Рейтинг: 0 / 0
28.03.2004, 15:35
    #32459839
s@a
s@a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
В Interbase если вместо имени поля вставить № поля получаешь ошибку
Dynamic SQL Error
SQL error code = -104
Token unknown - line 3, char 8
1

Выходит в Interbase даже с подключёнными UDF нельзя в одном скрипте реализовать такую штуку :-((
...
Рейтинг: 0 / 0
28.03.2004, 16:04
    #32459850
Andrew Kruchinin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Вернемся к баранам - версия сервера какая?
...
Рейтинг: 0 / 0
28.03.2004, 17:39
    #32459873
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Попробуй
GROUP BY SUBSTR(TAB1.FIELD1, 1, 2)
...
Рейтинг: 0 / 0
28.03.2004, 20:19
    #32459913
Droner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Попробуй так
Select Substr(Field1,1,2) AS Field1, sum(Field2)
from Tab1
group by Field1
...
Рейтинг: 0 / 0
28.03.2004, 22:08
    #32459930
s@a
s@a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Всё ясно, здесь такие же умники как и я, без результата но всем спасибо .
...
Рейтинг: 0 / 0
29.03.2004, 09:23
    #32460079
Andrew Kruchinin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
А версию сервера так и не сказал. Ну прям шпиён какой-то...
...
Рейтинг: 0 / 0
29.03.2004, 11:02
    #32460270
s@a
s@a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Серевер Interbase 5.5.0.742
...
Рейтинг: 0 / 0
29.03.2004, 11:05
    #32460278
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Чтобы не зависеть от версии сервера в построении запроса, надо
просто добавить в табл. вычисляемое (COMPUTED) поле со значением
первые 2 символа из поля Field1.
Тогда все стандартно:
SELECT FIRST2FROMFIELD1, SUM(FIELD2)
FROM TAB1
GROUP BY FIRST2FROMFIELD1
...
Рейтинг: 0 / 0
29.03.2004, 11:05
    #32460279
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
И ещё раз
...
Рейтинг: 0 / 0
29.03.2004, 11:07
    #32460287
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Все же стоит попробовать как написал S.G.
Код: plaintext
1.
2.
3.
SELECT SUBSTRING(TAB1.FIELD1 from  1  for  2 ), SUM(TAB1.FIELD2)
FROM TAB1
GROUP BY SUBSTRING(TAB1.FIELD1 from  1  for  2 )

Хотя версия 5.5 уж очень старая ... может там и не работает.

Best regards,
Dnico.
...
Рейтинг: 0 / 0
29.03.2004, 11:17
    #32460309
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
>Dnico

В IB5.5 не только таких группировок нет, но и сабстринг ещё не встроен...:)
...
Рейтинг: 0 / 0
30.03.2004, 08:07
    #32461639
Andrew Kruchinin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
А не чревато ли использовать в COMPUTED BY полях вычисляемое через UDF значение? B/R пройдет нормально потом на 100%?
...
Рейтинг: 0 / 0
30.03.2004, 08:13
    #32461646
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Переходи на Firebird 1.0. В нем можно делать GROUP BY по UDF. Проблем с переходом не будет, а работать будет все гораздо стабильнее.
...
Рейтинг: 0 / 0
30.03.2004, 10:33
    #32461802
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
>А не чревато ли использовать в COMPUTED BY полях вычисляемое через UDF
>значение? B/R пройдет нормально потом на 100%?

Чреватостей и ненормальностей замечено не было...
:)
...
Рейтинг: 0 / 0
30.03.2004, 12:59
    #32462120
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
У него же IB5.5!
Еще в то время как появился IB5.6 уже говорили что надо срочно менять IB5.5 на IB5.6, потому как IB5.5 глючноватая.
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
30.03.2004, 22:58
    #32462955
s@a
s@a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Добавил в таблицу вычисляемое поле с подлючённым из UDF Substr, стало легче. Но мысль о переходе на Firebird 1.5 закралась в душу- слишком тоскливо
на Interbase.
...
Рейтинг: 0 / 0
30.03.2004, 23:16
    #32462965
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Давай, переходи на Firebird - там гораздо веселей
...
Рейтинг: 0 / 0
31.03.2004, 08:09
    #32463112
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
На Firebird 1.5 не спеши переходить. Там глюк есть не приятный в оптимизаторе. 1.0 юзай. Но и он, конечно, не без греха.
...
Рейтинг: 0 / 0
31.03.2004, 08:38
    #32463140
Andrew Kruchinin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
И какой же это глюк там есть? Не просвятишь для интереса чтобы на грабли не наступил просто.
...
Рейтинг: 0 / 0
31.03.2004, 11:36
    #32463509
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
FreemanZAV , а ты про какую версию FB 1.5 говоришь ?
Их вообще-то было 10 штук. (9 кандидатов)

Best regards,
Dnico.
...
Рейтинг: 0 / 0
31.03.2004, 13:30
    #32463795
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итог по части значения
Я пробовал на RC9 и на final release. Платформа RedHat 9.0. Глюк такой:

Ошибка проявляется при использовании объединений таблиц и хранимых процедур.

Имеются 2 таблицы
CREATE TABLE TABLE1 (
FIELD1 INTEGER);

CREATE TABLE TABLE2 (
FIELD2 INTEGER);

На базе второй таблицы создана ХП:

CREATE PROCEDURE P_TABLE2
RETURNS (
FIELD2 INTEGER)
AS
BEGIN
FOR
SELECT FIELD2 FROM TABLE2 INTO :FIELD2
DO BEGIN
SUSPEND;
END
END
Если выполнить запрос типа:

SELECT * FROM TABLE1 T INNER JOIN P_TABLE2 PT ON T.FIELD1=PT.FIELD2

в Firebird 1.0 выполняется MERGE объединение, т.е. план запроса такой:
PLAN MERGE (SORT (T NATURAL),SORT (TABLE2 NATURAL))
и запрос выполняется весьма быстро.

В Firebird 1.5 ситуация другая. План запроса он выдает такой:

PLAN JOIN (TABLE2 NATURAL,T NATURAL)

Однако чтобы выполнить запрос по такому плану за приемлемое время при большом кол. записей необходим индекс (и то он не дает желаемого эффекта). Поэтому запрос выполняется ужасно долго.

Я писал об этом разработчикам и они ответили, что в курсе этой проблемы и работают над ее решением.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Итог по части значения / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]