Как вывести данные из БД(MySQL) по 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
При отстутвии необходимости в имени тега таблицу тегов можно вообще к чертям выкинуть из запроса

Спасибо большое 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 есть автоматический построитель запросов, который показал мне запрос каким я его и делал. Круть :)
Только пришлось покапаться хорошенько чтоб получить нужное действие