|
|
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Здраствуйте господа. Есть 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 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 09:49 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. Firebird 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 10:29 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
В 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 14:33 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Написали же: Group By 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 15:08 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
В Interbase если вместо имени поля вставить № поля получаешь ошибку Dynamic SQL Error SQL error code = -104 Token unknown - line 3, char 8 1 Выходит в Interbase даже с подключёнными UDF нельзя в одном скрипте реализовать такую штуку :-(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 15:35 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Вернемся к баранам - версия сервера какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 16:04 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Попробуй GROUP BY SUBSTR(TAB1.FIELD1, 1, 2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 17:39 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Попробуй так Select Substr(Field1,1,2) AS Field1, sum(Field2) from Tab1 group by Field1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 20:19 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Всё ясно, здесь такие же умники как и я, без результата но всем спасибо . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2004, 22:08 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
А версию сервера так и не сказал. Ну прям шпиён какой-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 09:23 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Серевер Interbase 5.5.0.742 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 11:02 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Чтобы не зависеть от версии сервера в построении запроса, надо просто добавить в табл. вычисляемое (COMPUTED) поле со значением первые 2 символа из поля Field1. Тогда все стандартно: SELECT FIRST2FROMFIELD1, SUM(FIELD2) FROM TAB1 GROUP BY FIRST2FROMFIELD1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 11:05 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Все же стоит попробовать как написал S.G. Код: plaintext 1. 2. 3. Хотя версия 5.5 уж очень старая ... может там и не работает. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 11:07 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
>Dnico В IB5.5 не только таких группировок нет, но и сабстринг ещё не встроен...:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 11:17 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
А не чревато ли использовать в COMPUTED BY полях вычисляемое через UDF значение? B/R пройдет нормально потом на 100%? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 08:07 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Переходи на Firebird 1.0. В нем можно делать GROUP BY по UDF. Проблем с переходом не будет, а работать будет все гораздо стабильнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 08:13 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
>А не чревато ли использовать в COMPUTED BY полях вычисляемое через UDF >значение? B/R пройдет нормально потом на 100%? Чреватостей и ненормальностей замечено не было... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 10:33 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
У него же IB5.5! Еще в то время как появился IB5.6 уже говорили что надо срочно менять IB5.5 на IB5.6, потому как IB5.5 глючноватая. ------------------------ С уважением, Denis Uskov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 12:59 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Добавил в таблицу вычисляемое поле с подлючённым из UDF Substr, стало легче. Но мысль о переходе на Firebird 1.5 закралась в душу- слишком тоскливо на Interbase. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 22:58 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Давай, переходи на Firebird - там гораздо веселей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 23:16 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
На Firebird 1.5 не спеши переходить. Там глюк есть не приятный в оптимизаторе. 1.0 юзай. Но и он, конечно, не без греха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 08:09 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
И какой же это глюк там есть? Не просвятишь для интереса чтобы на грабли не наступил просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 08:38 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
FreemanZAV , а ты про какую версию FB 1.5 говоришь ? Их вообще-то было 10 штук. (9 кандидатов) Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 11:36 |
|
||
|
Итог по части значения
|
|||
|---|---|---|---|
|
#18+
Я пробовал на 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) Однако чтобы выполнить запрос по такому плану за приемлемое время при большом кол. записей необходим индекс (и то он не дает желаемого эффекта). Поэтому запрос выполняется ужасно долго. Я писал об этом разработчикам и они ответили, что в курсе этой проблемы и работают над ее решением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2004, 13:30 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32459913&tid=1578931]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 437ms |

| 0 / 0 |
