Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
25.03.2011, 12:58
|
|||
---|---|---|---|
|
|||
Коррелированные запросы. |
|||
#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, 13:18
|
|||
---|---|---|---|
|
|||
Коррелированные запросы. |
|||
#18+
Проблема решена вызовом sum() с третим полем в параметре. Я удаляюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.03.2011, 13:22
|
|||
---|---|---|---|
Коррелированные запросы. |
|||
#18+
UberKAKTUSСчитать в несколько запросов считаю крайне неправославной затеей. В некоторых случаях MS-SQL в разы быстрее выполняет несколько запросов с сохранением промежуточного результата во временную таблицу, чем один мега-запрос с подзапросами. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.03.2011, 13:31
|
|||
---|---|---|---|
|
|||
Коррелированные запросы. |
|||
#18+
Dima TUberKAKTUSСчитать в несколько запросов считаю крайне неправославной затеей. В некоторых случаях MS-SQL в разы быстрее выполняет несколько запросов с сохранением промежуточного результата во временную таблицу, чем один мега-запрос с подзапросами.Сказанное Вами вполне закономерно, однако кучка простых запросов мое самолюбие ни сколь не тешат. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.03.2011, 19:27
|
|||
---|---|---|---|
|
|||
Коррелированные запросы. |
|||
#18+
автор Сказанное Вами вполне закономерно, однако кучка простых запросов мое самолюбие ни сколь не тешат. Вот по этому ты не получаешь 300 тысячь. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.03.2011, 20:38
|
|||
---|---|---|---|
Коррелированные запросы. |
|||
#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:43
|
|||
---|---|---|---|
Коррелированные запросы. |
|||
#18+
Поправка Запрос Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.03.2011, 11:21
|
|||
---|---|---|---|
Коррелированные запросы. |
|||
#18+
AmKad Подобные запросы работают только в том случае, если связь один-ко-многим есть только для одной таблицы из всех таблиц-источников. А все прочие таблицы связаны как один-к-одному. Как только, например, на одну карту окажется несколько диагнозов (на что намекает условие Diagnosis.Main = .t.), то подобные запросы начнут выдавать не корректные результаты. В общем случае, предварительно, необходимо свести все данные к связям вида один-к-одному и только после этого выполнять объединение. А подобного можно добиться либо предварительными выборками в промежуточные хранилища (курсоры), либо подзапросами. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=41&mobile=1&tid=1584467]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 290ms |
total: | 435ms |
0 / 0 |