
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.10.2006, 08:49
|
|||
|---|---|---|---|
|
|||
Помогите пожалуйста правильно посчитать разность |
|||
|
#18+
Здравствуйте! Следующая задача. Имеем две таблицы: main ---- main_id| value 1| 50 2| 60 3| 40 4| 20 second sec_id| main_id| value 1| 1| 10 2| 1| 15 3| 2| 5 4| 3| 10 Нужно для каждого main_id посчитать разницу между value в main и всеми value в second, для которых second.main_id = main.main_id. Проблема в том что в случае отсутсвия строк в second получается NULL! Я делаю так: SELECT main_id, value - (SELECT SUM(value) FROM second WHERE second.main_id = main.main_id) FROM main; Если так делать, то по main_id номер 4 будет получатся NULL вместо положенного 20. Как решить эту проблему? Я придумал только одно: проверять на наличие записей в таблице second и использовать два запроса объединенные UNION. Но очень желательно сделать без этого. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2006, 09:11
|
|||
|---|---|---|---|
|
|||
Помогите пожалуйста правильно посчитать разность |
|||
|
#18+
Может стОит вот так попробывать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2006, 09:18
|
|||
|---|---|---|---|
|
|||
Помогите пожалуйста правильно посчитать разность |
|||
|
#18+
Анна, большое спасибо! Это то что нужно. Следующий вопрос уже только из интереса. Если бы мы находились за рамками T-SQL и не имели бы в распоряжении функции ISNULL, то как бы вышли из данной ситуации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2006, 09:28
|
|||
|---|---|---|---|
|
|||
Помогите пожалуйста правильно посчитать разность |
|||
|
#18+
NegatorЕсли бы мы находились за рамками T-SQL и не имели бы в распоряжении функции ISNULL, то как бы вышли из данной ситуации?Вообще, в ANSI-SQL на этот случай (преобразование неопределенного значения NULL в НЕКОТОРОЕ ОПРЕДЕЛЕННОЕ значение) предусмотрена функция Код: plaintext И если сервер претендует на совместимость с ANSI-SQL92 (и выше), то сия функция должна в нем присутствовать. Кроме того, есть выражение CASE, которое так же описано в стандарте ANSI-SQL92 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=55&tablet=1&tid=2012514]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
222ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 552ms |

| 0 / 0 |
