![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с запросом ................ [D7]
03111978 © (2010-09-02 12:04:00)Есть табличка вида :
Оплата Иванов
Оплата Петров
Оплата Сидоров
Оплата Кукушкин
Оплата Мордушкин
Необходимо сделать табличку вида :
Оплата Иванов
Оплата Петров
Оплата Сидоров
Оплата Кукушкин
Оплата Мордушкин
Задолженность Иванов
Задолженность Петров
Задолженность Сидоров
Задолженность Кукушкин
Задолженность Мордушкин
03111978 (2010-09-03 12:23:00) [1]
> проще
> ФИО сумма флаг
> ---- ------ ---
> Иванов 100 1
> Петров 150 1
> Сидоров 20 1
> Кукушкин 0 1
> Мордушкин 43 1
> Иванов 110 -1
> Петров 50 -1
> Сидоров 20 -1
> Кукушкин 0 -1
> Мордушкин 430 -1
>
> тогда задача решается
> select ФИО, сумма
> from табличка
> order by ФИО asc, флаг desc
У меня нет этой таблички, ее нужно получить в таком виде
Petr V. Abramov (2010-09-02 16:07:00) [2]
> Почему, спрашивается, не сделать ОДНУ табличку с тремя полями:
>
>
> Ф.И.O. Оплата Задолженность
>
> Иванов 100 0
> Петров 50 50
> Сидоров 20 80
> Кукушкин 0 100
> Мордушкин 43 57
проще
ФИО сумма флаг
---- ------ ---
Иванов 100 1
Петров 150 1
Сидоров 20 1
Кукушкин 0 1
Мордушкин 43 1
Иванов 110 -1
Петров 50 -1
Сидоров 20 -1
Кукушкин 0 -1
Мордушкин 430 -1
тогда задача решается
select ФИО, сумма
from табличка
order by ФИО asc, флаг desc
Сергей М. (2010-09-02 13:25:00) [3]
> Потому что в итоге необходимо получить следующее
А вот то что пользователь в результате должен увидеть- это уже из другой оперы. И опять же нт никакого повода плодить кучу таблиц, усложняя жизь себе и людям.
Ф.И.O. Вид Месяц Сумма
Иванов Задолженность Январь 0
Иванов Оплата Январь 100
Иванов Задолженность Февраль 50
Иванов Оплата Февраль 50
Петров Задолженность Январь 44
Петров Оплата Январь 56
Петров Задолженность Февраль 99
Петров Оплата Февраль 1
И. Павел (2010-09-02 13:18:00) [4]> Потому что в итоге необходимо получить следующее :
Еще одно поле в таблице: период оплаты/начисления. Иначе каждый год придется добавлять еще 12 новых полей :)
И. Павел (2010-09-02 13:17:00) [5]> Этот запрос каждый раз создает табличку
Ну очищайте ее перед новым созданием, и все. Или DELETE или DROP TABLE.
А лучше, соедините оплаты и начисления изначально в одну таблицу. Например: можно для каждой записи добавить флаг: начисление это, оплата (тогда можно быдет предусмотреть несколько типов оплат).
А если оплат и начислений для каждого человека не может быть несколько, то [27]
03111978 (2010-09-02 13:16:00) [6]
> Почему, спрашивается, не сделать ОДНУ табличку с тремя полями:
>
Потому что в итоге необходимо получить следующее :
Оплата ФИО Январь ....... Декабрь
Оплата Кукушкин 0 ....... 100
Задолженость Кукушкин 43 ........ 57
03111978 (2010-09-02 13:12:00) [7]
> И. Павел © (02.09.10 13:04) [26]
>
> > [24] 03111978 (02.09.10 13:00)
>
> Чем [21] не устраивает?
Этот запрос каждый раз создает табличку, да спасибо, все верно, работает, но если выполнить этот запрос еще раз, то он опять создает табличку, но она там уже есть и запрос не отрабатывает. Наверное все таки в моем случае лучше сделать как в
> [25]
Сергей М. (2010-09-02 13:11:00) [8]
> 03111978 (02.09.10 13:00) [24]
>
> сделал так : 2 таблички (Dolg И Oplata)
Что что ты маловато баблиек наплодил.. Давай ышшо с десяток наделай)
Почему, спрашивается, не сделать ОДНУ табличку с тремя полями:
Ф.И.O. Оплата Задолженность
Иванов 100 0
Петров 50 50
Сидоров 20 80
Кукушкин 0 100
Мордушкин 43 57
??
Сергей М. (2010-09-02 13:11:00) [9]> баблиек
табличек
И. Павел (2010-09-02 13:04:00) [10]> [24] 03111978 (02.09.10 13:00)
Чем [21] не устраивает?
03111978 (2010-09-02 13:04:00) [11]таблица Oplata : таблица Dolg :
Иванов 56 Сидоров 5
Сидоров 45 Иванов 12
Необходимо получить :
Таблица: Rez(Например по Иванову)
Оплата Иванов 56
Задолженность Иванов 12
03111978 (2010-09-02 13:00:00) [12]сделал так : 2 таблички (Dolg И Oplata)
Теперь необходимо сформировать еще одну табличку и вывести ее на экран, в которой будет 2 строчки, долг и оплата, по конкретно выбранному человеку.
Сергей М. (2010-09-02 12:38:00) [13]
> И. Павел © (02.09.10 12:36) [21]
> FROM zadolz
Нет у него никакой "zadolz")
Он же говорит "есть табличка", а не "есть дветаблички")
Сергей М. (2010-09-02 12:36:00) [14]
> вывести на экран
Запрос номер раз.
> сохранить в базе
Запрос номер два.
Минимум ДВА запроса требуется, ущучиваешь ?)
Тебя какой из них интересует ?)
И. Павел (2010-09-02 12:36:00) [15]> Как вывести на экран, так и сохранить в базе
Тогда, наверное, можно сделать такой запрос (во всяком случае в MS SQL SERVER):
SELECT a.summa, a.FIO
INTO newt
FROM
(SELECT summa, FIO FROM oplati
UNION
SELECT summa, FIO FROM zadolz) AS a
03111978 (2010-09-02 12:32:00) [16]
> И. Павел © (02.09.10 12:27) [17]
>
> > 03111978
>
> Кстати, нужно только вывести итоговую "таблицу" на экран,
> или сохранить ее в базе?
Как вывести на экран, так и сохранить в базе
brother (2010-09-02 12:31:00) [17]> Ну опечатка . И что ?
прочитай [5] вопросы отпадут...
Сергей М. (2010-09-02 12:29:00) [18]
> 03111978 (02.09.10 12:27) [16]
>
>
Да как же тебе совет дать, мил человек, коль ты не можешь вразумительно или не желаешь конкретизировать что тебе нужно ?
"Сформировать табличку" - понятие весьма растяжимое)
Я ж тебя спросил в [2], а воз и ныне там)
И. Павел (2010-09-02 12:27:00) [19]> 03111978
Кстати, нужно только вывести итоговую "таблицу" на экран, или сохранить ее в базе?
03111978 (2010-09-02 12:27:00) [20]
> Сергей М. © (02.09.10 12:25) [14]
>
>
> > 03111978 (02.09.10 12:22) [10]
>
>
> Ты всерьез полагаешь что для этого тебе нужен ОДИН запрос
> ?)
> Наивный чукотский юноша)
>
Я попросил, совета, а вы здесь целую дискуссию развели )))))))))))))))))