![]() |
|
Модераторы: skyboy |
![]()
|
|
| str_killer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.5.2007 Репутация: нет Всего: нет |
MsSQL
есть две таблички: sortament и prihod в sortament: id_sortament, ... в prihod: id_prihod и id_sortament(из первой), т.е в первой сортамент, а во второй приходы по данному сортаменту(привязка через id_sortament) есть такой запрос
который возвращает все ИДшники из первой таблицы и кол-во строк из второй таблицы, с соответствующим ИДшником. Вопрос: как сделать, чтобы если количество строк из второй таблицы равнялось 0, то вместо нуля выводилось бы какое-нибудь не нулевое число например 999? пример, есть id_sortament kolvo 1 1 2 0 3 3 4 0 нужно id_sortament kolvo 1 1 2 999 3 3 4 999 Помогите пожалуйста Это сообщение отредактировал(а) str_killer - 26.8.2008, 08:29 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| str_killer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.5.2007 Репутация: нет Всего: нет |
Спасибо, Akina! Про кейс то я и зобыл((
|
|||
|
||||
| str_killer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.5.2007 Репутация: нет Всего: нет |
такой вопрос:
есть три таблички: : sortament, prihod и rashod в sortament: id_sortament, ... в prihod: id_prihod, kolvo и id_sortament(из первой), т.е в первой сортамент, а во второй приходы по данному сортаменту(привязка через id_sortament) в rashod: id_rashod, kolvo и id_sortament(из первой), т.е в первой сортамент, а в третьей расходы по данному сортаменту(привязка через id_sortament) нужно посчитать сумму поля kolvo всех приходов и вычесть все расходы по каждому сортаменту, делаю так:
а данные получаются неверные((( пример: prihod id_sortament id_prihod kolvo 1 1 5 1 2 10 2 3 20 2 4 30 rashod id_sortament id_rashod kolvo 1 1 1 2 2 2 2 3 3 2 4 4 должно получица: id_sortament kolvo_all 1 14 2 41 а получается типа этого: id_sortament kolvo_all 1 13(5+10-2*1) 2 ~12.17((20+30)/3-(2+3+4)/2) т.е, суммарное кол-во прихода делица на колво строк в расходе и наоборот и потом только вычитаюца как переделать запрос? Это сообщение отредактировал(а) str_killer - 26.8.2008, 09:42 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Лучше переделай структру базы. Оставь одну таблицу движения мат. средств, и расходы пиши отрицательными. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| str_killer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.5.2007 Репутация: нет Всего: нет |
Akina, Идея конечно неплохая, если бы таблички прихода и расхода имели только эти поля, проблема в том что это единственные общие поля в этих таблицах, а остальная структура очень сильно различается, поэтому совместить их проблематично, вот и напрягаюсь потихонечку
|
|||
|
||||
| source777 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
И что работает? Там у тебя в запросе целая куча ошибок, например,
Ну так напрягайся сам, подучи SQL, потренируйся на сайте http://www.sql-ex.ru/exercises.php и напрягайся сколько влезет... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||||
|
|||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Тогда source777 прав - учи матчасть. Проблемы - от недостатка знаний. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| str_killer |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.5.2007 Репутация: нет Всего: нет |
source777
сами таблицы очень большие и чтобы было понятнее я привел примеры на придуманных таблицах и запрос написал ручками, поэтому не заметил пару ошипок))), что в принципе некритично, мне же нужна идея как это можно сделать, поэтому примерный запрос вполне показывает ситуацию если это так критично для тебя вот запрос без ошипок.... вроде бы
спасибо, этим и занимаюсь, можешь помочь - помоги, не можешь - извини, тебе в другую тему тогда ;))) Добавлено @ 11:09
Если бы не было недостатка в знаниях, я бы и не создавал эту тему, пытаюсь понять как это можно сделать, вот и решил может кто поможет;)) Это сообщение отредактировал(а) str_killer - 26.8.2008, 12:05 |
||||||||
|
|||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
str_killer, ты привел пример наполнения таблиц в посте за 26.8.2008, 10:40.
Допустим, в таблице сортамента есть 2 записи с ИД 1 и 2. Построй ВРУЧНУЮ на листе бумаги ту самую выборку, которая является источником отбора в твоем запросе - т.е. сортамент и связанные туда приход и расход. а? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| str_killer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.5.2007 Репутация: нет Всего: нет |
А можно как-нибудь одним запросом привязать две таблицы к одной, не связав их с собой или только вложенными запросами? Добавлено через 1 минуту и 45 секунд я понимаю, что таблицы неправильно завязаны, но что-то недогоняю, как правильно((( |
|||
|
||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
Запрос то сварганить не сложно, вот только тебе от этого лучше не будет, а лучше будет - когда сможешь самостоятельно думать. Сходи всё-таки на сайт, который я тебе рекомендовал... Выполни такой запрос и догадайся как доделать самостоятельно...
Предполагается что в твоих таблицах есть столбец date, поддерживающий уникальность набора {id_sortament, kolvo, date} в пределах таблицы, короче первичный ключ должен входить в оба селекта, но ты не указал, что у тебя там является первичным ключём... Это сообщение отредактировал(а) source777 - 26.8.2008, 13:21 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| str_killer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.5.2007 Репутация: нет Всего: нет |
думать самостоятельно получается(очень понравилось ))), просто с sql мало дел имею и запросы, которые посложнее не всегда получаются спасибо будет время поразбираюсь |
|||
|
||||
![]()
|
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |