Как вывести данные из БД(MySQL) по id тэга?
Есть три таблицы: таблица тегов и таблица с записями и общая таблица.
Таблица тегов:
id | teg_name
Таблица записей:
id | name | url
Общая таблица:
id_teg | id_row (id тега | id записи)
Из таблицы тегов выводятся теги на страницу со своими идентификаторами в виде ссылки, нажимаем ссылку, в скрипт передаётся id тега. Дальше нужно вывести записи соответствующие выбранному тегу и их общее количество(для постраничной навигации). Проблема в том что не могу сообразить как составить запрос, нужна помощь в этом.
Как я понял надо составить запрос на вывод из двух таблиц сразу, в одном запросе, со сравнением id. Дальше этого пока не ушёл :)
Таблица тегов:
id | teg_name
Таблица записей:
id | name | url
Общая таблица:
id_teg | id_row (id тега | id записи)
Из таблицы тегов выводятся теги на страницу со своими идентификаторами в виде ссылки, нажимаем ссылку, в скрипт передаётся id тега. Дальше нужно вывести записи соответствующие выбранному тегу и их общее количество(для постраничной навигации). Проблема в том что не могу сообразить как составить запрос, нужна помощь в этом.
Как я понял надо составить запрос на вывод из двух таблиц сразу, в одном запросе, со сравнением id. Дальше этого пока не ушёл :)
1 ответов
Ого, халявные плюсики
SELECT t.id AS tag_id, t.teg_name AS tag, p.id AS post_id, p.name AS post_name, p.url AS post_url
FROM tags AS t
LEFT JOIN tag_posts_relation AS tpr ON tpr.id_teg = t.id
LEFT JOIN posts AS p ON p.id = tpr.id_row
WHERE t.id = :id
При отстутвии необходимости в имени тега таблицу тегов можно вообще к чертям выкинуть из запроса
FROM tags AS t
LEFT JOIN tag_posts_relation AS tpr ON tpr.id_teg = t.id
LEFT JOIN posts AS p ON p.id = tpr.id_row
WHERE t.id = :id
При отстутвии необходимости в имени тега таблицу тегов можно вообще к чертям выкинуть из запроса
Спасибо большое Fike, твой ответ привёл меня куда нужно. Немного дополнив запрос я получил что нужно:
SELECT `psts_tags`.*, `posts`.`name`, `posts`.`url`, `tags`.`id` FROM tags
LEFT JOIN `psts_tags` ON `tags`.`id` = `psts_tags`.`id_tag`
LEFT JOIN `posts` ON `psts_tags`.`id_row` = `posts`.`id`
WHERE `tags`.`id` = :id
posts - записи
psts_tags - общая
tags - теги
Но потом я нашёл хорошую штуку, оказывается что в моём денвере с обновлённым PHPmyadmin есть автоматический построитель запросов, который показал мне запрос каким я его и делал. Круть :)
Только пришлось покапаться хорошенько чтоб получить нужное действие
LEFT JOIN `psts_tags` ON `tags`.`id` = `psts_tags`.`id_tag`
LEFT JOIN `posts` ON `psts_tags`.`id_row` = `posts`.`id`
WHERE `tags`.`id` = :id
posts - записи
psts_tags - общая
tags - теги
Но потом я нашёл хорошую штуку, оказывается что в моём денвере с обновлённым PHPmyadmin есть автоматический построитель запросов, который показал мне запрос каким я его и делал. Круть :)
Только пришлось покапаться хорошенько чтоб получить нужное действие