все просто. я ответил на вопрос ТСа. ты ниже даешь свой, типа более правильный, наверное. и вот мне интересно, ты правда считаешь что правильнее выбирать по названию категории, а не по идентификатору?
как это по русски будет. объясни значения слов, плиз. select, *, from, where знаю ))) Еще бы название категории вывести. Например, Фрукты: Банан, Яблоко, а не просто Банан, Яблоко
нашел. Проверьте плиз PHP: "SELECT t_cat.title as cat_title, t_art* FROM categories AS t_cat INNER JOIN articles AS t_art ON t_art.cat_id=t_cat.id WHERE t_cat.id = 1"
А как мне еще название раздела вывести. Раздел самый высший, т.е. раздел->категории->записи --- Добавлено --- что?
@Konstant1n обычно название раздела на момент выполнения запроса, который вы просили показать, уже известно. Вы сначала делаете запрос к таблице категорий по слагу или числовому id, чтобы убедиться, что такая категория действительно существует, и попутно получаете название, описание, числовой id (если запрос выполнялся по слагу) и т.п. --- Добавлено --- Для придания выдаче такого же вида, как и у запроса без фильтра присоединять по сути одно и то же к каждой статье не нужно (кстати, у MouseZver'а действительно странный запрос; нужно к статьям присоединять категории, а не наоборот). Можно подставить фактические данные, полученные в результате первого запроса, в результат второго или прямо во второй запрос: Код (Text): SELECT `articles`.*,`category_slug` "{$page['slug']}",`category_name` "{$page['name']}" FROM `articles` LEFT JOIN `category` USING(`category_id`) WHERE ...
Эээ... Я переусердствовал в коде выше. Как написал перед кодом, присоединять не нужно. Присоединение вы делаете только в случае откл. фильтра: Код (Text): SELECT `articles`.*,`category_slug`,`category_name` FROM `articles` LEFT JOIN `category` USING (`category_id`)
@Konstant1n, вчера не заметил вашу приписку про то, что у вас раздел != категория. Но принцип в общем-то тот же самый. Вот как будто специально под ваш вопрос писал: http://gency.ru/filter-items-by-level-of-hierarchy (в демке к статье показаны осн. запросы для каждого из трех уровней иерархии, без фильтра, с фильтром по разделам и с фильтром по категории раздела; подготовительные запросы делаете заранее). --- Добавлено --- В первом запросе выше сначала пишется строка с факт. данными, а потом алиас (явно на что-то отвлекался, когда писал этот запрос ): Код (Text): "{$page['slug']}" [AS] `category_slug` и т.п., AS можно опустить
category_slug, category_name берутся из таблицы categories? Это названия столбцов? С примера на месте их какие будут поля?
Да, из таблицы категорий. Да, названия столбцов, но можете сделать и алиасами, как в запросе с фильтрами, например у вас в примере имеется совпадение имени поля title в таблицах, поэтому делаете так: `categories`.`title` `cat_title`. Слаги в примере не используются. Имя поля с числовым id категории в таблицах различается, поэтому вместо USING() используете ON, а во избежание дублирования поля в результирующей выборке «не подтягиваете» его из присоединяемой таблицы, т.е. для примера достаточно выбирать такие поля: `articles`.*,`categories`.`title` `cat_title` (а в выражении ON используете `cat_id` и `categories`.`id`, если трудно добиться совпадения имени). Еще раз напоминаю, что присоединение делаете только в случае откл. фильтра. При выборе статей конкретной категории лучше делать так: `articles`.*,'{$data['title']}' `cat_title`, предварительно выбрав заголовок категории в $data['title'].
можешь пример запроса написать для таблицы выше. вывести все заметки категории 1. и чтобы был title категории
Я вроде по-русски написал, что заголовок лучше получать отдельным запросом, не? А в основном подставляете полученный ранее заголовок, как показано в пред. и не только посте, если нужно добиться подобия результату без фильтрации по категории (если не нужно, то и не поставляете). И естественно не забываете в конце написать WHERE `cat_id`=1.