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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2016, 07:48   #1
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию SQL работа с датами

есть 2 таблицы
prodavec - данные о продавцах
Безымянный.png
ZP - данные об изменении З.П.
Безымянный1.png
Код:
SELECT *
FROM prodavec, ZP
WHERE prodavec.k_prdvc = ZP.k_prdvc;
вопрос состоит в том как вывести З.П. сначала работы по настоящее время за каждый месяц (допустим ЗП платят каждому сотруднику раз в месяц в день когда его приняли на работу)?

Не могу додуматься как так можно сделать.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 02.05.2016, 08:30   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если зарплата каждый месяц и только раз в месяц в том запросе и так уже все есть. Осталось на отображении только год и месяц показать из даты. Если же не раз в месяц, то в запросе выдернуть год и месяц из даты, сгруппировать по этому прдвц , году и месяцу, просуммировав зарплату

Походу ACCESS функции даты-времени в запросе

https://support.office.com/ru-ru/art...6-a3c43f0ac99e
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.05.2016, 09:23   #3
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

забыл сказать в таблице отображаются только изменения заработной платы, Т.Е.
Код:
ЗП - 2000 р на 20.03.2015 
ЗП - 3000 р на 20.06.2015
для одного продавца
а вывести нужно
Код:
ЗП - 2000 р на 20.03.2015
ЗП - 2000 р на 20.04.2015
ЗП - 2000 р на 20.05.2015 
ЗП - 3000 р на 20.06.2015
ЗП - 3000 р на 20.07.2015
............................
ЗП - 3000 р на 20.04.2016
о параметре для вывода информации по конкретному продавцу вопрос не стоит
Код:
SELECT *
FROM prodavec, ZP
WHERE prodavec.k_prdvc = ZP.k_prdvc and prodavec.k_prdvc = :k_Prod
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 02.05.2016 в 09:27.
Dvoishnik вне форума Ответить с цитированием
Старый 02.05.2016, 10:28   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

получить ПОСЛЕДНЕЕ изменение з\платы на УКАЗАННЫЙ (заданный) день.
получить ДАТУ ПОСЛЕДНЕГО изменения з\платы
НАчинаем с конца.

Код:
select max(dt) as lastdt from t where dt<fixdate // последнее изменение в период ДO fixdate
Код:
select fixdate, zp, --другие поля группировки и идентификации
from t
left join ( select max(dt) as lastdt ,  --другие поля группировки и идентификации
             from t where dt<fixdate
             grop by --другие поля группировки и идентификации
           ) as l on l.lastdat =t.dt and --другие поля группировки и идентификации
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.05.2016, 16:55   #5
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

чет я нечего не понял .
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 02.05.2016, 18:49   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вариант 1. Создавать временную опорную таблицу в виде год, месяц. Например нужно получить данные с ноября 2015 по март 2016 включительно. Тогда в таблицу поместить
2015 11
2015 12
2016 01
2016 02
2016 03
Ведущей таблицей она и будет в запросе, выбирать наибольший год и месяц в зарплате, но не больший текущей записи опорной таблицы, оттуда и брать зарплату

Вариант 2. Тянуть данные как есть. Рассчитывать в программе и отображать в StringGrid-e. Или писать данные расчета в ClientDataSet и отображать в DBGrid
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.05.2016, 06:03   #7
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

понял возьму StringGrid спс.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL Работа с датами. Asper04 Помощь студентам 5 13.11.2012 09:36
SQL между 2-мя датами MaLaGuS БД в Delphi 6 02.06.2012 16:16
Работа с датами в SQL Server 2005 Abdukhafiz SQL, базы данных 9 17.04.2012 20:18
SQL запрос между 2 датами Never74 БД в Delphi 6 18.12.2011 13:52
Проблема при работе с датами sql server в delphi Fellot БД в Delphi 3 05.06.2010 22:50