Форум: "Начинающим";
Текущий архив: 2010.11.28;
Скачать: [xml.tar.bz2];
ВнизПомогите с запросом ................ Найти похожие ветки
← →
03111978 (2010-09-02 12:04) [0]Есть табличка вида :
Оплата Иванов
Оплата Петров
Оплата Сидоров
Оплата Кукушкин
Оплата Мордушкин
Необходимо сделать табличку вида :
Оплата Иванов
Оплата Петров
Оплата Сидоров
Оплата Кукушкин
Оплата Мордушкин
Задолженность Иванов
Задолженность Петров
Задолженность Сидоров
Задолженность Кукушкин
Задолженность Мордушкин
← →
brother © (2010-09-02 12:07) [1]> Есть табличка вида :
где?
← →
Сергей М. © (2010-09-02 12:07) [2]Было 5 записей, нужно чтобы стало 10.
Сложности с запросом на вставку ? Или что ?
← →
03111978 (2010-09-02 12:09) [3]
> brother © (02.09.10 12:07) [1]
>
> > Есть табличка вида :
>
> где?
MS SQL
← →
brother © (2010-09-02 12:09) [4]> MS SQL
+1 к информации ;)
← →
brother © (2010-09-02 12:15) [5]http://segfault.kiev.ua/smart-questions-ru.html
← →
pavel_guzhanov © (2010-09-02 12:15) [6]предполагаю, что тут нужен ALTER TABLE
← →
И. Павел © (2010-09-02 12:17) [7]> [0] 03111978 (02.09.10 12:04)
Какие у таблицы поля? Какие там записи сейчас, и какие джолжны быть?
Что-то мне кажется, что автору нужно сделать не таблицу, а запрос с UNION.
← →
03111978 (2010-09-02 12:19) [8]
> Что-то мне кажется, что автору нужно сделать не таблицу,
> а запрос с UNION.
да, запрос нужен
← →
И. Павел © (2010-09-02 12:20) [9]> да, запрос нужен
Нафиг это программирование, пойду в гадалки :)
← →
03111978 (2010-09-02 12:22) [10]
> Нафиг это программирование, пойду в гадалки :)
В тебе написано, что нужен запрос, который сформирует табличку нужного вида, хоть ходи, хоть не ходи к гадалке :-)
← →
И. Павел © (2010-09-02 12:23) [11]В самом примитивном виде (если есть таблица оплат и задолженностей, содержащие 2 столбца: сумму и ФИО), запрос будет примерно таким:
SELECT summa, name FROM oplati
UNION
SELECT summa, name FROM zadolz
Но, конечно, name должен располагаться в справочнике, т.е. нужно будет добавить Join.
← →
brother © (2010-09-02 12:23) [12]> В тебе написано
O_o
← →
И. Павел © (2010-09-02 12:25) [13]> хоть не ходи к гадалке :-)
И мею ввиду, что сам собираюсь в гадалки податься, а не вас туда отправляю, если вы это имеете ввиду :)
← →
Сергей М. © (2010-09-02 12:25) [14]
> 03111978 (02.09.10 12:22) [10]
Ты всерьез полагаешь что для этого тебе нужен ОДИН запрос ?)
Наивный чукотский юноша)
← →
03111978 (2010-09-02 12:26) [15]
> brother © (02.09.10 12:23) [12]
>
> > В тебе написано
>
> O_o
>
Ну опечатка . И что ? только поболтать можешь ? Или подковырнуть кого ?
← →
03111978 (2010-09-02 12:27) [16]
> Сергей М. © (02.09.10 12:25) [14]
>
>
> > 03111978 (02.09.10 12:22) [10]
>
>
> Ты всерьез полагаешь что для этого тебе нужен ОДИН запрос
> ?)
> Наивный чукотский юноша)
>
Я попросил, совета, а вы здесь целую дискуссию развели )))))))))))))))))
← →
И. Павел © (2010-09-02 12:27) [17]> 03111978
Кстати, нужно только вывести итоговую "таблицу" на экран, или сохранить ее в базе?
← →
Сергей М. © (2010-09-02 12:29) [18]
> 03111978 (02.09.10 12:27) [16]
>
>
Да как же тебе совет дать, мил человек, коль ты не можешь вразумительно или не желаешь конкретизировать что тебе нужно ?
"Сформировать табличку" - понятие весьма растяжимое)
Я ж тебя спросил в [2], а воз и ныне там)
← →
brother © (2010-09-02 12:31) [19]> Ну опечатка . И что ?
прочитай [5] вопросы отпадут...
← →
03111978 (2010-09-02 12:32) [20]
> И. Павел © (02.09.10 12:27) [17]
>
> > 03111978
>
> Кстати, нужно только вывести итоговую "таблицу" на экран,
> или сохранить ее в базе?
Как вывести на экран, так и сохранить в базе
← →
И. Павел © (2010-09-02 12:36) [21]> Как вывести на экран, так и сохранить в базе
Тогда, наверное, можно сделать такой запрос (во всяком случае в MS SQL SERVER):
SELECT a.summa, a.FIO
INTO newt
FROM
(SELECT summa, FIO FROM oplati
UNION
SELECT summa, FIO FROM zadolz) AS a
← →
Сергей М. © (2010-09-02 12:36) [22]
> вывести на экран
Запрос номер раз.
> сохранить в базе
Запрос номер два.
Минимум ДВА запроса требуется, ущучиваешь ?)
Тебя какой из них интересует ?)
← →
Сергей М. © (2010-09-02 12:38) [23]
> И. Павел © (02.09.10 12:36) [21]
> FROM zadolz
Нет у него никакой "zadolz")
Он же говорит "есть табличка", а не "есть две таблички")
← →
03111978 (2010-09-02 13:00) [24]сделал так : 2 таблички (Dolg И Oplata)
Теперь необходимо сформировать еще одну табличку и вывести ее на экран, в которой будет 2 строчки, долг и оплата, по конкретно выбранному человеку.
← →
03111978 (2010-09-02 13:04) [25]таблица Oplata : таблица Dolg :
Иванов 56 Сидоров 5
Сидоров 45 Иванов 12
Необходимо получить :
Таблица: Rez (Например по Иванову)
Оплата Иванов 56
Задолженность Иванов 12
← →
И. Павел © (2010-09-02 13:04) [26]> [24] 03111978 (02.09.10 13:00)
Чем [21] не устраивает?
← →
Сергей М. © (2010-09-02 13:11) [27]
> 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) [28]> баблиек
табличек
← →
03111978 (2010-09-02 13:12) [29]
> И. Павел © (02.09.10 13:04) [26]
>
> > [24] 03111978 (02.09.10 13:00)
>
> Чем [21] не устраивает?
Этот запрос каждый раз создает табличку, да спасибо, все верно, работает, но если выполнить этот запрос еще раз, то он опять создает табличку, но она там уже есть и запрос не отрабатывает. Наверное все таки в моем случае лучше сделать как в
> [25]
← →
03111978 (2010-09-02 13:16) [30]
> Почему, спрашивается, не сделать ОДНУ табличку с тремя полями:
>
Потому что в итоге необходимо получить следующее :
Оплата ФИО Январь ....... Декабрь
Оплата Кукушкин 0 ....... 100
Задолженость Кукушкин 43 ........ 57
← →
И. Павел © (2010-09-02 13:17) [31]> Этот запрос каждый раз создает табличку
Ну очищайте ее перед новым созданием, и все. Или DELETE или DROP TABLE.
А лучше, соедините оплаты и начисления изначально в одну таблицу. Например: можно для каждой записи добавить флаг: начисление это, оплата (тогда можно быдет предусмотреть несколько типов оплат).
А если оплат и начислений для каждого человека не может быть несколько, то [27]
← →
И. Павел © (2010-09-02 13:18) [32]> Потому что в итоге необходимо получить следующее :
Еще одно поле в таблице: период оплаты/начисления. Иначе каждый год придется добавлять еще 12 новых полей :)
← →
Сергей М. © (2010-09-02 13:25) [33]
> Потому что в итоге необходимо получить следующее
А вот то что пользователь в результате должен увидеть - это уже из другой оперы. И опять же нт никакого повода плодить кучу таблиц, усложняя жизь себе и людям.
Ф.И.O. Вид Месяц Сумма
Иванов Задолженность Январь 0
Иванов Оплата Январь 100
Иванов Задолженность Февраль 50
Иванов Оплата Февраль 50
Петров Задолженность Январь 44
Петров Оплата Январь 56
Петров Задолженность Февраль 99
Петров Оплата Февраль 1
← →
Petr V. Abramov © (2010-09-02 16:07) [34]
> Почему, спрашивается, не сделать ОДНУ табличку с тремя полями:
>
>
> Ф.И.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
← →
03111978 (2010-09-03 12:23) [35]
> проще
> ФИО сумма флаг
> ---- ------ ---
> Иванов 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
У меня нет этой таблички, ее нужно получить в таком виде
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.11.28;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.004 c