SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.12.2010 20:17:09

Венера
Участник
Зарегистрирован: 12.12.2010
Сообщений: 3

SQL-запрос

Помогите с запросами! 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  - наименование

Неактивен

 

#2 13.12.2010 01:48:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: SQL-запрос

Очень странные у Вас потребности в запросах wink

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.

Неактивен

 

#3 13.12.2010 01:59:56

Венера
Участник
Зарегистрирован: 12.12.2010
Сообщений: 3

Re: SQL-запрос

спасибо!!!

Неактивен

 

#4 13.12.2010 02:02:50

Венера
Участник
Зарегистрирован: 12.12.2010
Сообщений: 3

Re: SQL-запрос

Задание 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



у меня получилось что-то такое! ))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson