mihdan
Новичок
Дано: 2 таблицы - статьи и авторы. Задача: вывести на экран 6 последних публикаций разных авторов.
Таблица авторов:
Таблица статьи:
Делаю запрос:
Выводит 6 публикаций, сгруппированных по автору, но не последние. Что может быть тут не так? Или как сделать правильно?
Таблица авторов:
PHP:
CREATE TABLE IF NOT EXISTS `crm_persons` (
`id_person` int(10) unsigned NOT NULL AUTO_INCREMENT,
`surname_ru` varchar(255) NOT NULL,
`name_ru` varchar(255) NOT NULL,
`patronymic_ru` varchar(255) NOT NULL,
`photo_120x90` varchar(200) NOT NULL,
`id_country` int(10) unsigned NOT NULL DEFAULT '0',
`id_region` int(10) unsigned NOT NULL DEFAULT '0',
`id_city` int(10) unsigned NOT NULL DEFAULT '0',
`id_subway` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id_person`),
KEY `id_country` (`id_country`),
KEY `id_region` (`id_region`),
KEY `id_city` (`id_city`),
KEY `surname_ru` (`surname_ru`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Список персоналей'
PHP:
CREATE TABLE IF NOT EXISTS `crm_news` (
`id` bigint(8) NOT NULL AUTO_INCREMENT,
`id_rubric` bigint(8) NOT NULL DEFAULT '0',
`id_region` varchar(30) NOT NULL DEFAULT '0',
`id_theme` varchar(30) NOT NULL DEFAULT '',
`id_plot` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Сюжет',
`type` int(4) NOT NULL DEFAULT '0',
`name_ru` varchar(255) NOT NULL DEFAULT '',
`date` datetime NOT NULL,
`date_start` date NOT NULL DEFAULT '0000-00-00' COMMENT 'Дата начала показа события',
`date_end` date NOT NULL DEFAULT '0000-00-00' COMMENT 'Дата завершения показа события',
`id_person` int(10) unsigned NOT NULL DEFAULT '0',
`announcement_ru` text NOT NULL,
`content_ru` longtext NOT NULL,
PRIMARY KEY (`id`),
KEY `id_rubric` (`id_rubric`),
KEY `id_region` (`id_region`),
KEY `id_theme` (`id_theme`),
KEY `name_ru` (`name_ru`),
KEY `subname_ru` (`subname_ru`),
KEY `date` (`date`),
KEY `id_person` (`id_person`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO
PHP:
SELECT
`p`.`id_person`,
`p`.`photo_120x90`,
CONCAT_WS (' ', `p`.`name_ru`, `p`.`surname_ru`) AS `author`,
`n`.`id` AS `id_new`,
`n`.`name_ru` AS `name`,
`n`.`announcement_ru` AS `announcement`
FROM `crm_persons` AS `p`
LEFT JOIN `crm_news` AS `n` ON `n`.`id_person` = `p`.`id_person`
WHERE `n`.`type` = 6
AND `p`.`photo_120x90` <> ''
AND `p`.`surname_{$lng}` <> ''
AND `p`.`name_{$lng}` <> ''
AND `n`.`name_{$lng}` <> ''
AND `n`.`announcement_{$lng}` <> ''
GROUP BY `n`.`id_person`
ORDER BY `n`.`date` DESC
LIMIT 6