|
|
|
Оптимизация запроса (по мотивам моего же топика)
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32330994&tid=1579602]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
189ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 568ms |

| 0 / 0 |
