![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Помогите с запросами! Plese! ))
1. Написать запрос, который вернет последние действующие
записи привязок кодов направлений к зонам.
Запрос должен возвращать все поля таблицы t_mts_c_ref.
Таблица t_mts_c_ref привязка кодов направлений МТР к тарифным зонам МТР
mts_c_id - идентификатор записи (первичный ключ)
mts_zone_id - идентификатор тарифной зоны
mts_cod_id - идентификатор кода направления
date_begin - дата начала
date_end - дата окончания (может быть незаполнена)
mts_type_vnd_id - идентификатор поставщика связи
Формат дат - ДД ММ YYYY, т.е. часы и минуты не указаны .
Комбинация полей mts_zone_id, mts_cod_id, date_begin, mts_type_vnd_id
всегда уникальная и определяет действующую на date_begin привязку
кодов направлений к зонам по данному поставщику.
Записи могут быть введены как задним, так и передним числом,
т.е нельзя ориентироваться на текущую дату.
2. Написать запрос, который вернет список оплат по диапазону конкретных дат(с ...по ),
показывающий даты оплаты, сумму, наименование пункта приема оплат и вида платежного документа.
В случае отсутствия вида платежного документа - показывать "Вид ПД не найден". Результаты сгруппировать по датам (на каждое число), видам платежных документов и пунктам приема оплат.
таблица оплат t_payments
payment_id - идентификатор оплаты (первичный ключ)
summ - сумма
pay_date - дата оплаты.Формат даты – полный (до секунд)
pay_doc_id - идентификатор вида платежного документа
pos_id - идентификатор пункта приема оплат
идентификатор вида платежного документа может быть не заполнен
таблица - справочник видов платежных документов t_pay_doc_ref
pay_doc_id - идентификатор (первичный ключ)
name - наименование
таблица - справочник пунктов приема оплат t_point_of_sales_ref
pos_id - идентификатор (первичный ключ)
name - наименование
Неактивен
Очень странные у Вас потребности в запросах
1. Сначала решите, что по настоящему является уникальным в строках.
Меня несколько пугают все те страшные названия, но если от них абстра-
гироваться, то Ваша таблица очень проста — в ней есть поле с датой
(date_begin) и другие какие-то поля. Запрос, который Вас устроит, это
SELECT MAX(date_begin), какие-то поля
FROM t_mts_c_ref
GROUP BY те же поля.
Список полей нужно угадать самостоятельно — это как раз то, что Вы ищете.
2. Что-нибудь такое:
SELECT summ FROM t_payments
WHERE pay_date BETWEEN (... AND ...)
GROUP BY DATE(pay_date), pay_doc_id, pos_id.
Неактивен
Задание 1.
SELECT tmcr.mts_c_id, tmcr.mts_zone_id, tmcr.mts_cod_id, DATE_FORMAT(tmcr.date_begin,'%m-%d-%Y'), tmcr.date_end, tmcr.mts_type_vnd_id
FROM t_mts_c_ref tmcr
LEFT JOIN mts_type_ref mtr on mtr.id = mts_type_vnd_id
LEFT JOIN mts_code_ref mcr on mcr.id = mts_cod_id
LEFT JOIN mts_zone_ref mzr on mzr.id = mts_zone_id
WHERE tmcr.date_begin= ?date and mtr.type = ?type_post
Задание 2.
SELECT tp.pay_date, tp.sum, tposr.name pos_name, pay_name = CASE WHEN tpdr.pay_doc_id IS NULL THEN Вид ПД не найден ' ELSE tpdr.pay_doc_id END tpdr.pay_doc_id
FROM t_payments tp
LEFT JOIN t_points_of_sales_ref tposr on tposr.pos_id = tp.pos_id
LEFT JOIN t_pay_doc_ref tpdr on tpdr. pay_doc_id = tp.pay_doc_id
WHERE (tp.pay_date between(?date1 and ?date2)
GROUP BY tp.pay_date, pos_name, tpdr.name
у меня получилось что-то такое! ))
Неактивен