Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.11.28;
Скачать: CL | DM;

Вниз

Помогите с запросом ................   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.011 c
2-1283965980
AlexDn
2010-09-08 21:13
2010.11.28
Заливка прямоугольника


15-1282079208
cwl
2010-08-18 01:06
2010.11.28
Графический движок


2-1283425358
bostar
2010-09-02 15:02
2010.11.28
про пиктограммы


2-1283518156
NoSilence
2010-09-03 16:49
2010.11.28
Всегда поверх остальных


2-1283947390
Phoenix
2010-09-08 16:03
2010.11.28
Работа с LDap в Delphi