2015-03-05 3 views
0

У меня проблема с sql-запросом. Идея состоит в том, чтобы выбрать все кредиты, которые после оплаты (статус 1/2/3), между 8 и 21 днями, с расчетным значением с payment_day til now.MySQL Заказ по столбцу подзаголовка

Я уже сделал какой-то запрос, но не могу использовать столбцы days_after_payment и days_after_part_payment в разделе WHERE. Я хотел бы иметь один столбец типа days_after_payment, основанный на типе займа.

SELECT l.*, 
(SELECT SUM(`value`) FROM `loan_part` WHERE `loan_id` = l.id AND `paid`=0) AS left_to_pay, 
-(DATEDIFF((SELECT date FROM `loan_part` WHERE `loan_id` = l.id AND `paid`=0 AND `date`<CURDATE() ORDER BY `date` LIMIT 1), NOW())) AS days_after_part_payment, 
-(DATEDIFF(l.payment_date, NOW())) AS days_after_payment 
FROM loan l 
WHERE (l.type=1 or l.type=2) AND (l.status=1 OR l.status=2 OR l.status=3) 
GROUP BY l.client_id 
ORDER BY 
CASE l.type 
    WHEN 1 THEN days_after_payment 
    WHEN 2 THEN days_after_part_payment 
    ELSE 1 END 
ASC 

CREATE TABLE IF NOT EXISTS `loan` (
    `id` int(11) NOT NULL, 
    `value` int(11) NOT NULL, 
    `client_id` int(11) NOT NULL, 
    `status` int(11) NOT NULL, 
    `type` int(11) NOT NULL, 
    `payment_date` date DEFAULT NULL 
) ENGINE=MyISAM AUTO_INCREMENT=2068 DEFAULT CHARSET=utf8; 

CREATE TABLE IF NOT EXISTS `loan_part` (
`id` int(10) unsigned NOT NULL, 
    `loan_id` int(11) NOT NULL, 
    `value` float NOT NULL, 
    `date` date DEFAULT NULL, 
    `paid` tinyint(1) NOT NULL DEFAULT '0' 
) ENGINE=MyISAM AUTO_INCREMENT=1751 DEFAULT CHARSET=utf8; 

Update1: Мне пришлось вырезать ненужные столбцы и переписать его на английский с моего родного языка.

+0

отправьте структуру таблицы (SQL DDL). – 1000111

+0

@SubrataDey done – janosik

ответ

0
ORDER BY 7 

"7" означает 7-е поле в SELECT. Это работает и для GROUP BY. Мне нужно было определить определение таблицы, сколько в l.*.

Как прийти id не объявлен AUTO_INCREMENT?

+0

Может быть, я сделал что-то не так, пока структура экспорта. Идентификаторы - это автоинкремент. – janosik

Смежные вопросы