У меня есть таблица под названием properties (p) и другая таблица, называемая сертификатами (c). Для каждого свойства может быть не более одного сертификата или никакого сертификата. Мне нужно создать запрос, который использует соединение, и отображает только один сертификат из таблицы сертификатов для каждого свойства. Один сертификат, который показан, должен быть с самой последней датой истечения срока действия. В таблице сертификатов есть поле с именем «certificate_expiry_date». Простым соединением будет p.property_id = c.certificate_property, но в настоящее время он выводит все сертификаты.MySQL - добавить предложения влево присоединиться
Мой запрос Покушение
Вот мой запрос до сих пор;
SELECT DISTINCT t.tenancy_property, t.*, p.*, c.* FROM tenancy t
INNER JOIN property p
on t.tenancy_property = p.property_id
LEFT JOIN
(
SELECT *
FROM certificate
WHERE certificate_expiry_date > CURDATE()
ORDER BY certificate_expiry_date DESC
LIMIT 1
) c ON p.property_id = c.certificate_property
WHERE t.tenancy_type='1' AND p.property_mains_gas_supply='1' AND p.property_availability='2' ORDER BY t.tenancy_id DESC LIMIT {$startpoint} , {$per_page}
Этот запрос выполняется нормально, но, похоже, не учитывает левое соединение в таблице сертификатов.
Структура таблицы для таблицы certificate
CREATE TABLE IF NOT EXISTS `certificate` (
`certificate_id` int(11) NOT NULL AUTO_INCREMENT,
`certificate_property` int(11) DEFAULT NULL,
`certificate_type` tinyint(4) DEFAULT NULL,
`certificate_reference` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`certificate_start_date` date DEFAULT NULL,
`certificate_expiry_date` date DEFAULT NULL,
`certificate_notes` text COLLATE utf8_bin,
`certificate_renewal_instructed` tinyint(4) DEFAULT NULL,
`certificate_renewal_contractor` int(11) DEFAULT NULL,
PRIMARY KEY (`certificate_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=219 ;
Классический «выберите верхнюю часть на группу». – shmosel
Я добавил тег [tag: great-n-per-group]. На этот вопрос ответили сотни раз. Просто следуйте ссылке тега. –
@BillKarwin Он выбирает только один элемент, поэтому нет групп. – Barmar