powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Построение запроса к БД
7 сообщений из 7, страница 1 из 1
Построение запроса к БД
    #32824405
Попробую описать приблизительно суть проблемы.
Есть несколько организаций, осуществляющих перевозку, в каждой из них есть парк машин, каждая машина имеет свой номер. Машины могут переходить из одной организации в другую с течением времени. Для каждой из организаций существует свой тариф на перевозку, рублей в час, который может меняться с течением времени. Далее, имеется ведомость, в которой имеется номер машины, дата и количество отработанных часов за эту дату. Теперь главное, нужно в конце месяца рассчитать, сколько заработала каждая из компаний перевозчиков.
Я создал приблизительно такую БД.
Таблица Vehicles – номера маши
Таблица Organizations – организации
Таблицa Vehicle-organization(Vehicle_id, organization_id, date) – связанная с двумя предыдущими – для определения, с какого числа машина работает в данной организации.
Таблица Rates(Rate, organization_id, date) – размер тарифа и дата, с которого он действует.
Таблица vedomost (vehicle_id,date,hours) – ведомость отработанного времени по дням.
Я предполагаю, что одним запросом можно вытянуть на дату рейса и организацию, для которой осуществляется перевозка и тариф на эту дату для этой организации, но что-то с реализацией у меня неважно. Можно написать обработку, и добавить дополнительные поля к таблице ведомость, но так не хочется. А может я таблицы я неправильно создал… Помогите плз, в каком направлении вести работу. Да делаю все это под Access? Поэтому и пишу в этот форум %)
Если что-то не дописал, то я уточню, голова идет кругом и нет новых мыслей
...
Рейтинг: 0 / 0
Построение запроса к БД
    #32824423
Дмитрий15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Диско_Мишка
Таблицa Vehicle-organization(Vehicle_id, organization_id, date) – связанная с двумя предыдущими – для определения, с какого числа машина работает в данной организации.
Таблица Rates(Rate, organization_id, date) – размер тарифа и дата, с которого он действует.
Таблица vedomost (vehicle_id,date,hours) – ведомость отработанного времени

Попробуй сделать одну основную таблицу где будешь отмечать какого числа, на кого (организация) и сколько отработала машина.
ТОгда одним запросом сможешь получить сколько денюшков платить.
А по оплате - действие тарифа лучше описать не как "с какого числа" - а как с какого по какое - иначе сложно подзапрос сделать будет.
Последний траф можешь сделать открытым и запрос на дату будет что то вроде
дата между даты_тарифа или дата > дата начала тарифа и тариф открыт.
.... это так - мысли.
...
Рейтинг: 0 / 0
Построение запроса к БД
    #32824431
Фотография roma_tundra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
текст SQL:

SELECT Vehicles.№_автомобиля, Organizations.организация, [Vehicle-organization].дата, vedomost.дата, vedomost.к_во_часов, Rates.тариф, [Rates Запрос].[Max-дата], [к_во_часов]*[тариф] AS сумма
FROM ((Vehicles INNER JOIN vedomost ON Vehicles.№_автомобиля = vedomost.№авт) INNER JOIN ((Organizations INNER JOIN Rates ON Organizations.организация = Rates.организация) INNER JOIN [Vehicle-organization] ON Organizations.организация = [Vehicle-organization].организация) ON Vehicles.№_автомобиля = [Vehicle-organization].№авт) INNER JOIN [Rates Запрос] ON (Rates.дата = [Rates Запрос].[Max-дата]) AND (Organizations.организация = [Rates Запрос].организация)
GROUP BY Vehicles.№_автомобиля, Organizations.организация, [Vehicle-organization].дата, vedomost.дата, vedomost.к_во_часов, Rates.тариф, [Rates Запрос].[Max-дата], [к_во_часов]*[тариф]
HAVING (((vedomost.дата)=[Vehicle-organization.дата]));

все работает, только не один запрос, а два - на последнюю дату тарифа для
организации
...
Рейтинг: 0 / 0
Построение запроса к БД
    #32824432
Фотография roma_tundra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
плюс база
...
Рейтинг: 0 / 0
Построение запроса к БД
    #32824438
Фотография roma_tundra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, косяк :)

если доп. запрос на последнюю дату тарифа - то все считает по последней дате :((

но где то в этом направлении рыть надо
...
Рейтинг: 0 / 0
Построение запроса к БД
    #32824456
База данных так и выглядит, и проблема именно в этом, определить тариф и организацию на дату перевозки, при условии , что машины постоянно меняются между организациями и тарифы тоже подвержены изменению. Может еще какие идеи будут?
...
Рейтинг: 0 / 0
Построение запроса к БД
    #32824466
Фотография roma_tundra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицa Vehicle-organization(Vehicle_id, organization_id, date)
добавить поле Last_rates, при оформлении заявки туда попадает последний дейсвующий для этой организации тариф (запрос в базе Rates Запрос )
и тогда в общем должно что-то получиться.
А еще - зачем ведомость: Таблицa Vehicle-organization(Vehicle_id, organization_id, date, Last_rates) добавляем время - hour, и можем спокойно одной машиной обслужить за один день нескольких клиентов(табл. vedomost соответственно ненужна).
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Построение запроса к БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]