Доброго времени суток, уважаемые!
Имеется банальная галерея, собираемая из нескольких таблиц MySQL: Категория, Рисунки, Тэги.
Рисунки и Тэги, как "многие к многим", собираются через дополнительную таблицу images_tags
Таблицы
таблица category
| category_id | title |
-------------------------
| 1 | люди |
таблица images
id | name | category_id |
-----------------------------
1 | Иван | 1 |
2 | Марья | 1 |
таблица tags
id | tagname |
--------------
1 | человек |
2 | женщина |
3 | мужчина |
таблица images_tags
id | images_id | tags_id |
----------------- ---------------
1 | 1 (Иван) | 1 (человек) |
2 | 2 (Марья) | 1 (человек) |
3 | 1 (Иван) | 3 (мужчина) |
4 | 2 (Марья) | 2 (женщина) |
Выводится всё это через SQL INNER JOIN
$query = '
SELECT images.name,
GROUP_CONCAT(tags.tagname SEPARATOR ", ") AS tagname,
category.title
FROM images
INNER JOIN images_tags ON images.id = images_tags.images_id
INNER JOIN tags ON images_tags.tags_id = tags.id
INNER JOIN category ON images.category_id = category.category_id
WHERE images.category_id = 1
GROUP BY images.name
';
$query = $pdo->query($query);
$arrTable = $query->fetchAll(PDO::FETCH_ASSOC);
На выходе получаем массив $arrTable:
массив $arrTableArray
(
[0] => Array
(
[name] => Иван
[tagname] => Человек, Мужчина
[title] => Люди
)
[1] => Array
(
[name] => Марья
[tagname] => Человек, Женщина
[title] => Люди
)
)
Но надо ещё получить список всех ТЭГОВ, из таблицы tags, соответствующий категории "Люди" (чтобы вывести на боковую панель "Облаком тегов" категории).
То есть дополнительно получить список:
Человек
Женщина
Мужчина
ВОПРОС: Как это сделать?
Создать ещё один запрос в tags.tagname?
Или взять полученный массив $arrTable вытащить оттуда $arrTable[tagname], пересобрать, почистить от дубликатов и выводить уже его?