|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Помогите сделать выборку SQL
Всем доброго времени суток...
Подскажите алгоритм построения выборки посредством SQL из таблиц Paradox...Суть задачи... Есть 2 одинаковые по структуре таблицы...с полями Дата Номер Цена...есть таблица с полями Дата Сумма1 Сумма2... Нужно из первых 2-х таблиц выбрать суммы цен за каждую дату...Затем эти суммы по датам перекинуть во 3-ю таблицу... Напимер... ........Таблица1................................Та блица2 20.11.2009.....1.....100*******22.11.2009.....2... .125 21.11.2009.....2......20*******25.11.2009.....3... .252 22.11.2009.....3......30*******29.11.2009.....4... .20 21.11.2009.....4......25*******22.11.2009.....5... .123 23.11.2009.....5......32*******25.11.2009.....6... .100 В таблице 3 должно быть 20.11.2009.....100....0 21.11.2009.....45....0 22.11.2009.....30....248 23.11.2009.....32.....0 25.11.2009.....0....352 29.11.2009.....0....20 Я уже реализовал работу программы, но через циклы и SQl запросы и.т.п...т.е. мне моя реализация не нравится... PS код реализации можно не писать, мне бы алгоритм... В начале был Бит, потом Байт и только потом появилось Слово... |
#2
|
|||
|
|||
Код:
SELECT [Дата], SUM([Цена]) FROM Table_Name GROUP BY [Дата] А объединять и вставлять придется руками. |
#3
|
||||
|
||||
Можно и без промежуточных телодвижений:
Код:
SELECT * INTO Table3 FROM (SELECT Tmp1.DateField, Sum(Tmp1.PriceField) AS SumOfPriceField FROM (SELECT DateField,NumberField,PriceField FROM Table1 UNION SELECT DateField,NumberField,PriceField FROM Table2) AS Tmp1 GROUP BY Tmp1.DateField) Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 29.11.2009 в 19:37. |
#4
|
|||
|
|||
В Парадоксе?
Честно говоря давно с BDE не работал, так что не помню, что там поддерживается, а что - нет. Более того, у тебя там ошибка, т.к. там тогда нужен JOIN, а не UNION. |
#5
|
||||
|
||||
Почему Join? У него стоит задача собрать данные из двух таблиц в одну общую и по ней делать групировку по дате с получением суммы - что я и сделал.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
||||
|
||||
Ладно попробую поиграться с выборкой Страдалецъ...Если что отпишусь...
В начале был Бит, потом Байт и только потом появилось Слово... |
#7
|
||||
|
||||
2 Страдалецъ...
Использовал твой вариант выборки... Код:
SELECT * INTO Table3 FROM (SELECT Tmp1.DateField, Sum(Tmp1.PriceField) AS SumOfPriceField FROM (SELECT DateField,NumberField,PriceField FROM Table1 UNION SELECT DateField,NumberField,PriceField FROM Table2) AS Tmp1 GROUP BY Tmp1.DateField) Код:
with DataModule_.Query_Income do begin Close; SQL.Clear; SQL.Add('SELECT * INTO Income'); SQL.Add('FROM'); SQL.Add('(SELECT Tmp1.DateDay, Sum(Tmp1.Summ) AS SumOfSumm'); SQL.Add('FROM'); SQL.Add('(SELECT DateDay, NumberBill, Summ FROM ListBillGoods.db)'); SQL.Add('UNION'); SQL.Add('(SELECT Dateday, NumberBill, Summ FROM ListBillBread.db)AS Tmp1)'); SQL.Add('GROUP BY Tmp1.DateDay)'); Open; end; Подскажи пожалуйста, что не так...что то я не совсем понимаю принцип команды SELECT INTO...понимаю, что создает временную таблицу Income, вот вопрос только в памяти или на диске...в сети мало что нашел, но продолжу... В начале был Бит, потом Байт и только потом появилось Слово... Последний раз редактировалось NIch, 03.12.2009 в 09:16. |
#8
|
|||
|
|||
Код:
insert into <Таблица3> (<Дата>, <Сумма>) (select <Дата>, sum(<Сумма>) from (select <Дата>, <Сумма> from <Таблица1> union all select <Дата>, <Сумма> from <Таблица2>) group by <Дата>) и никаких циклов и куч запросов P.S. работаю с Oracle, возможно, придется слегка адаптировать Последний раз редактировалось xanorik, 07.12.2009 в 14:49. |
#9
|
||||
|
||||
Здесь наверное правильнее использовать не Open, а ExecSql т.к. фактически вывод перенаправляется в новую таблицу.
Если ругается на INTO, то в парадоксе возможно используется несколько измененный диалект SQL, а тут уже справку в руки. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |