|
|
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Задача\r Есть таблица \r Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. здесь "DESTINATION" - FK на ID таблицы \r Код: plaintext 1. 2. 3. 4. "DELIVERY_TYPE" - FK на ID таблицы \r Код: plaintext 1. 2. 3. "TARA" - FK на ID таблицы\r Код: plaintext 1. 2. 3. Нужно написать запрос, который возвращает след. данные: \r 1 столбец - все значения поля "DELIVERY_TYPE.TYPE_NAME"\r 2 - COUNT(записей, у которых BAG_TYPES.NAME LIKE \'%ТАРА%\') \r 3 - SUM(по полю BAG_WEIGHT для записей, у которых BAG_TYPES.NAME LIKE \'%ТАРА%\' \r 4 - COUNT(записей, у которых BAG_TYPES.NAME LIKE \'%МЕШОК%\') \r 5 - SUM(по полю BAG_WEIGHT для записей, у которых BAG_TYPES.NAME LIKE \'%МЕШОК%\')\r \r Я решил так: создал 2 VIEW\r \r Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. И потом запрос\r Код: plaintext 1. 2. 3. 4. выдает нужные данные\r Вопрос: Можно это упростить? Ведь VIEW не обновляются, и придется их все время новые создавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:28 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Федор Ну а почему вместо всего вот этого не создать ХП и пользовать ее. Это же намного эффективнее, чем два view + запрос. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:32 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Да Я сразу как топик написал, сразу об этом подумал, спасибо за поддержку. Щас попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:51 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Правда опыта большого в написании ХП нет, подскажите пож. для начала, все в одной ХП можно сделать, или 3 понадобятся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 10:57 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
ВСЕ В ОДНОЙ !!! Там есть большие возможности : Для примера открой базу EMPLOYEE и посмотри что и как ... Она находится в директории \examples на сервере. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 11:20 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Никак не догоню, как через 1 ХП сделать :-( Мне ведь надо сделать SELECT 2-х других SELECTов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 12:10 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
ЧЕРЕЗ КОНСТРУКЦИЮ FOR SELECT ... Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 13:07 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Если я правильно понимяю, FOR SELECT выдает данные порционно (построчно). А мне же надо создать 2 набора данных (которые были в VIEW), а потом слить и их. Это-то можно как-либо реализовать? И еще, если можно, киньте пару-тройку ссылок почитать подробно про ХП с примерами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 13:52 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 14:36 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Так пример ХП для отчета Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 15:33 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
KiLLun ВАУ! Вот это пример !!! Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 15:44 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Могу опубликовать не менее впечатляющие тексты для ~5000 ХП ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 15:55 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Не ну извините если че, я не хотел никому портить настроение. И да вот еще что хотел бы увидеть пару процедур МОГУНа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 18:09 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
>Ведь VIEW не обновляются, и придется их все время новые создавать. Что это значит ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 18:11 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 19:30 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 19:32 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 19:36 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Спасибо конечено за примеры (хотя это похоже на то как двое членами меряются,... sorry за грубость, но не удержался), но все-таки на мой вопрос кто-нить сможет ответить. Я писал:Если я правильно понимяю, FOR SELECT выдает данные порционно (построчно). А мне же надо создать 2 набора данных (которые были в VIEW), а потом слить и их. Это-то можно как-либо реализовать в ХП? Johnmen писал:>Ведь VIEW не обновляются, и придется их все время новые создавать. Что это значит ??? Понял. Осознал, что я глупость написал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 09:43 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Эт` точно. Но ведь "в попугаях я гораздо длиннее" (удав). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 10:09 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Вот и сливай построчно !!! Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 10:10 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Но я же не могу задать в ХП набор данных? Или могу? Потому что (как у меня было раньше) к началу работы Код: plaintext 1. 2. 3. 4. уже должны быть созданы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. иначе как тогда обратится к наборам данных, кот. у меня в VIEW? Так я пишу, например TARA.TTYPE, а как я сделаю подобное в ХП? Dnico писал:Вот и сливай построчно !!! Вот как раз чтобы сливать построчно, надо иметь что сливать. Но если делать все в ОДНОЙ ХП, то как изначально получить те наборы данных, что у меня в VIEW? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2003, 13:56 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Вроде все сделал. Если можно, еще один вопросик. А эту мою задачу (выборку сделать), поставленную в самом начале, можно одним SELECTом решить??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 09:29 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Можно. P.S. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 10:11 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
1) Напиши аналог функции CAST (а может он уже есть в IB); 2) Первое что приходит в голову: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Можно пооптимизировать... А вообще естественным для такой задачи выглядит что-нить типа: Код: plaintext 1. 2. 3. Только внимательно надо отнестись тут к NULL полям... Разве это не то? P.S. CASE Evaluates a list of conditions and returns one of multiple possible result expressions. CASE has two formats: The simple CASE function compares an expression to a set of simple expressions to determine the result. The searched CASE function evaluates a set of Boolean expressions to determine the result. Both formats support an optional ELSE argument. Syntax Simple CASE function: CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Searched CASE function: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 10:56 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Вопрос к гуру IB: в IB есть аналог CASE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 13:34 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
И CAST и CASE все это уже есть. CASE - появилась в FB 1.5. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 13:37 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
А в IB 6.5 CASE есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 13:49 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
нет (скорее всего). Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 14:13 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
А замутить CASE через UDF в IB не как два пальца? Вывод: Пора переходить на FB...:-) P.S. Пардон, CAST - это я совсем не в тему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 15:42 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Да я замутил, тока ошибку Код: plaintext 1. 2. 3. выдает. Причем при вызове из дельфи работает корректно, а как UDF в IB не работает. Никто не знает из-за чего может это быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 15:46 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Так функцию нужно еще и определить в базе (примерно вот так): Код: plaintext 1. 2. 3. 4. 5. 6. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 16:36 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Короче у меня так Код: plaintext 1. 2. 3. 4. 5. 6. ну а DLL Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 16:46 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
А кстати, DLL где должна лежать относительно *.GDB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 16:59 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
На сервере есть папка UDF. Там и должно это быть. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:28 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
И нихрена оно не работает Код: plaintext 1. (в BAG_TYPES - 4 записи) выдает 0.0 0.0 0.0 0.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:01 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
{export; } ??? А почему вот это ? Должно быть : cdecl; export; Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:15 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Есть мнение, что кривые руки мешают задавать адекватные вопросы... Воинствующее невежество+Интернет=Страшная сила ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:18 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Нам тут раздают ЗАДАЧИ, что само по себе странно. Скромнее надо быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:20 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Ничего не понимаю Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. при A=qwer; S=q; D=0.0 ????????? Почему??? Кто-нить знает??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:24 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Я бы еще добавил const Код: plaintext 1. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:47 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
2 Могун: Лично ВАМ никто задания не раздает. Но если Вам так кажется, то Вас никто не заставляет их решать. Да, я еще плохо (может очень плохо) разбираюсь в IB. И просто прошу помочь. Причем не помочь решить, а подсказать, что может быть не так. У Вас, что с первого раза все получилось и стало работать? Dnico писал:Должно быть : cdecl; export; Дело в том, что у меня сначла так и было, но результат как был нулевым, так им и остался. Все равно, спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:50 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
2Федор, я могу иметь своё мнение, а оно таково: Вы воинствующе себя ведете и не работаете над ответами, которые дает аудитория, а я таких людей не уважаю, что и довожу до Вашего сведения. Сама семантика сообщения, которое говорит о ЗАДАЧЕ, тому подтверждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 19:00 |
|
||
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за помощь. Не буду с CASE мутить, что-то не работает никак. Пусть будет, как и было: через 2 ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 19:33 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1579602]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
202ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
98ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 602ms |

| 0 / 0 |
