Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2013, 14:35   #1
munhauz
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 47
По умолчанию сложный запрос

привет
и так к сути
есть 2 таблицы
в 1 - контрагенты [КА]
во 2 все операции с КА (заказы)
нужно сформировать таблицу, где будет все КА, у которых за выбранный период времени были заказы, а также была сумма всех заказав.
К примеру: на месяц из 1000, КА у 10 были заказы, и из этих 10 у 2 было по 2 разных заказа,
то выходная таблица должны иметь 10 записей, а у этих 2 КА, заказы должны быть суммированы.
надеюсь понятно написал
munhauz вне форума Ответить с цитированием
Старый 21.11.2013, 14:56   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Мартин Грубер Понимание SQL.
Цитата:
нужно сформировать таблицу, где будет все КА, у которых за выбранный период времени были заказы,
1. объединение таблиц
2. да еще фильтры (условия выбора) по времени заказов
Цитата:
а также была сумма всех заказав.
3. групповые операции

Цитата:
КА у 10 были заказы, и из этих 10 у 2 было по 2 разных заказа,
то выходная таблица должны иметь 10 записей, а у этих 2 КА, заказы должны быть суммированы
Для одного заказа тоже можно посчитать сумму. Да она будет равна одному заказу, но это тоже сумма.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.11.2013 в 14:59.
evg_m на форуме Ответить с цитированием
Старый 21.11.2013, 16:44   #3
munhauz
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 47
По умолчанию

забыл добавить
нужно отсортировать по суммам
munhauz вне форума Ответить с цитированием
Старый 21.11.2013, 17:20   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
нужно отсортировать по суммам
http://programmersforum.ru/showthread.php?t=248410

пост 2 пункт 3.
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 21.11.2013, 20:05   #5
munhauz
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 47
По умолчанию

как по одельности все сделать я в курсах
но вот в чем вопрос:
есть
таб1
| id| name |
| 1 | Иванов |
| 2 | Петров |

таб2
|id |num |idKA| data | symma
|1 |1 | 2 | 20/12/12 | 1025
|2 |3 | 2 | 10/12/12 | 2000
|3 |8 | 1 | 10/11/12 | 500
|4 |6 | 1 | 30/01/13 | 700

нужно
скажем за 2012 год
в итоге

Петров | 3025
Иванов | 500

сортировка по сумме, потому петров впереди
вопрос КАК ?
munhauz вне форума Ответить с цитированием
Старый 21.11.2013, 20:23   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

примерно так:
Код:
select t1.name, sum(T2.symma) as sumperiod 
  from таб1 T1, таб2 T2
  where T1.id = T2.idKA
           and year(t2.data) = 2012
  group by t1.id, t1.name
order by 2 desc
или так:
Код:
select KAName, sumperiod from
  (select t1.name as KAName, sum(T2.symma) as sumperiod 
    from таб1 T1, таб2 T2
    where T1.id = T2.idKA
           and year(t2.data) = 2012
    group by t1.id, t1.name) Z
order by Z.sumperiod desc
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.11.2013, 20:36   #7
munhauz
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 47
По умолчанию

спасибо прмерно таки думал
только вот беда - не получается
пишу в аксес а после буду в делвях в код зашивать в adoqwery
вот код
Код:
SELECT client_fiz.id, client_fiz.name, client_fiz.adrass, client_fiz.phone1, client_fiz.phone2, client_fiz.phone3, client_fiz.info, orders.data, orders.coast, orders.num, orders.take_it, orders.ves, orders.proc, orders.in_money, sum( [orders.coast]*[orders.proc]/100) AS proc_coast
FROM client_fiz, orders 
WHERE (((orders.take_it)=True)and(client_fiz.id = orders.id_client))
GROUP BY client_fiz.id
ORDER BY proc_coast, client_fiz.name, orders.data;
это из аксес
munhauz вне форума Ответить с цитированием
Старый 21.11.2013, 20:51   #8
munhauz
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 47
По умолчанию

Код:
SELECT client_fiz.id, client_fiz.name, client_fiz.adrass, client_fiz.phone1, client_fiz.phone2, client_fiz.phone3, client_fiz.info, Sum([orders.coast]*[orders.proc]/100) AS proc_coast
FROM client_fiz, orders
WHERE (((orders.take_it)=True) AND ((client_fiz.id)=[orders].[id_client]))
GROUP BY client_fiz.id, client_fiz.name, client_fiz.adrass, client_fiz.phone1, client_fiz.phone2, client_fiz.phone3, client_fiz.info
ORDER BY Sum([orders.coast]*[orders.proc]/100) DESC;
кажись разобрался
munhauz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не сложный запрос -=Andriushka=- SQL, базы данных 0 03.05.2013 20:26
сложный запрос Deeller БД в Delphi 3 29.04.2011 19:25
Сложный запрос templton Microsoft Office Access 8 21.04.2011 13:43
Сложный запрос Kostya777 Microsoft Office Access 1 07.12.2010 12:02
Сложный запрос Lianchik Помощь студентам 1 01.03.2010 17:16