|
Коррелированные запросы.
|
|||
---|---|---|---|
#18+
Требуется выбрать количество обратившихся (count(*) as countVisits) и количество оказанных услуг (count(*) as countServices) в разрезе диагнозов (Diagnosis.diagKey). Таблицы VisitCards (карта обратившегося пациента), Diagnosis (диагнозы) и Services (услуги) имеют поле для связи cardId. После выполнения нижеприведенного запроса поле countServices (количество оказанных услуг) содержит сумму услуг оказанных только последней обработанной запросом карте. Считать в несколько запросов считаю крайне неправославной затеей. В принципе запрос справедлив также для ветки МС СКЛ, куда и планирую обратиться в случае нерезультативности текущей темы. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 12:58 |
|
Коррелированные запросы.
|
|||
---|---|---|---|
#18+
Проблема решена вызовом sum() с третим полем в параметре. Я удаляюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 13:18 |
|
Коррелированные запросы.
|
|||
---|---|---|---|
#18+
UberKAKTUSСчитать в несколько запросов считаю крайне неправославной затеей. В некоторых случаях MS-SQL в разы быстрее выполняет несколько запросов с сохранением промежуточного результата во временную таблицу, чем один мега-запрос с подзапросами. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 13:22 |
|
Коррелированные запросы.
|
|||
---|---|---|---|
#18+
Dima TUberKAKTUSСчитать в несколько запросов считаю крайне неправославной затеей. В некоторых случаях MS-SQL в разы быстрее выполняет несколько запросов с сохранением промежуточного результата во временную таблицу, чем один мега-запрос с подзапросами.Сказанное Вами вполне закономерно, однако кучка простых запросов мое самолюбие ни сколь не тешат. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 13:31 |
|
Коррелированные запросы.
|
|||
---|---|---|---|
#18+
автор Сказанное Вами вполне закономерно, однако кучка простых запросов мое самолюбие ни сколь не тешат. Вот по этому ты не получаешь 300 тысячь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2011, 19:27 |
|
Коррелированные запросы.
|
|||
---|---|---|---|
#18+
Вообще на MS SQL это можно сделать так. Входные данные Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Запрос Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2011, 20:38 |
|
Коррелированные запросы.
|
|||
---|---|---|---|
#18+
Поправка Запрос Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2011, 20:43 |
|
Коррелированные запросы.
|
|||
---|---|---|---|
#18+
AmKad Подобные запросы работают только в том случае, если связь один-ко-многим есть только для одной таблицы из всех таблиц-источников. А все прочие таблицы связаны как один-к-одному. Как только, например, на одну карту окажется несколько диагнозов (на что намекает условие Diagnosis.Main = .t.), то подобные запросы начнут выдавать не корректные результаты. В общем случае, предварительно, необходимо свести все данные к связям вида один-к-одному и только после этого выполнять объединение. А подобного можно добиться либо предварительными выборками в промежуточные хранилища (курсоры), либо подзапросами. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2011, 11:21 |
|
|
start [/forum/search_topic.php?author=twenty&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 759ms |
total: | 908ms |
0 / 0 |