Нужно вывести 10 постов их теги и категории (категорий у каждого поста от одной и более).
Как я понимаю тут необходимо использовать связь "многие ко многим". Следовательно были созданы следующие таблицы:
posts
id, title, text
categories
id, category
tags
id, tag
post_category
post_id, cat_id
post_tag
post_id, tag_id
Пробовал делать через LEFT JOIN, возникла проблема: при выдаче, поста с 3-мя тегами он занимал 3 строки результата, то есть если ограничение в 10 записей(LIMIT 10) остается выдать максимум 7 постов, если у них будет по 1 тегу.
Подскажите как решить данную проблему, возможно циклами в SQL?,ее реализация есть на Wordpress,однако мои поиски и скудные познания ООП не дали результатов.
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cat` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `post_cat` (
`post_id` int(11) NOT NULL,
`cat_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `post_tag` (
`post_id` int(11) NOT NULL,
`tag_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `tags` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;