olegt2009
Дата: 14.01.2013 20:53:22
Коллеги, подскажите как решить задачу без неработающего limit в подзапросе ?
Нужно объединить две таблицы по полю одному ca_id (таблица ca первая и ca_fp вторая в объединении), НО при этом
из таблицы ca_fp выбрать только одну запись по общему в таблицах полю ca_id
но с ближащей максимальной датой указанной в запросе
если бы можно было писать Limit в подзапросе, то все было бы просто, но к сожалению он не работает ...
SELECT *
FROM ca
LEFT JOIN
ca_fp
ON ca.ca_id = ca_fp.ca_id
AND ca_fp.ca_fp_id in (SELECT ca_fp_id
FROM ca_fp
WHERE add_date <= '2013-01-11'
ORDER BY add_date DESC limit 1)
как можно переписать этот запрос без limit ?
Заранее спасибо всем откликнувшимся ...
структура таблиц ниже
CREATE TABLE ca (
ca_id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ca_id)
);
INSERT INTO ca (ca_id) VALUES(1);
INSERT INTO ca (ca_id) VALUES(2);
INSERT INTO ca (ca_id) VALUES(3);
CREATE TABLE ca_fp (
ca_fp_id int(11) NOT NULL AUTO_INCREMENT,
ca_id int(11) DEFAULT NULL,
budget float DEFAULT NULL,
add_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ca_fp_id)
);
INSERT INTO ca_fp (ca_fp_id, ca_id, budget, add_date) VALUES(1, 1, 11, '2012-11-12 00:00:00');
INSERT INTO ca_fp (ca_fp_id, ca_id, budget, add_date) VALUES(2, 1, 22, '2012-11-13 00:00:00');
INSERT INTO ca_fp (ca_fp_id, ca_id, budget, add_date) VALUES(3, 2, 22, '2012-11-13 16:00:00');
INSERT INTO ca_fp (ca_fp_id, ca_id, budget, add_date) VALUES(4, 3, 44, '2012-11-11 16:01:13');
INSERT INTO ca_fp (ca_fp_id, ca_id, budget, add_date) VALUES(5, 3, 33, '2012-11-13 16:01:54');