Я использую MySQL/PHP для хранения моих данных.Проблемы SQL с функцией объединения
У меня есть сайт с сообщениями, и я хотел был бы иметь возможность заказать их по тегам. (Посты имеют несколько тегов)
Есть 3 стола.
Medias (сообщений)
+----+--------+-----+
| id | title | ... |
+----+--------+-----+
| 1 | hello | ... |
| 2 | hi | ... |
+----+--------+-----+
теги
+----+------+-----+
| id | name | ... |
+----+------+-----+
| 1 | red | ... |
| 2 |square| ... |
+----+------+-----+
medias_tags (Для того, чтобы связать Medias & теги вместе)
+----+----------+--------+
| id | media_id | tag_id |
+----+----------+--------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
+----+----------+--------+
Итак, я использую этот SQL-запрос для объединения таблиц и вывода сообщения с определенным тегом.
$req_mda_list = $bdd->query('SELECT * FROM medias
JOIN medias_tags
ON medias.id=medias_tags.media_id
WHERE medias_tags.tag_id ='.$tag_id.'
ORDER BY date DESC
LIMIT '.$start.','.$limit);
Он работает однако когда я делаю другой запрос SQL внутри для того, чтобы получить другие тег каждой должности (Столбики имеют несколько тегов) это не работает. Я попытался перевернуть запросы, но я не получаю никаких данных из запроса или случайных тегов.
$data_mda = $req_mda_list->fetch()){
$req_mda_tags = $bdd->prepare('SELECT * FROM medias_tags WHERE media_id = ?');
$req_mda_tags->execute(array($mda_id));
$mda_tags_list = null;
while ($data_mda_tags = $req_mda_tags->fetch()){
$tag_id = $data_mda_tags['tag_id'];
$req_tag_name = $bdd->prepare('SELECT * FROM tags WHERE id = ?');
$req_tag_name->execute(array($tag_id));
$data_tag_name = $req_tag_name->fetch();
$mda_tags_list .= $data_tag_name['name'].' ';
}
#Show media title
echo $mda_tags_list;
}
Что вы ожидаете, когда сообщения сортируются по тегам? Как их сортировать? –
Вы пытались добавить '$ req_mda_tags-> store_result();' after' $ req_mda_tags-> execute (array ($ mda_id)); '? –
@YuryFedorov Они должны быть отсортированы с заголовком сообщения и связанными с ним тегами – casusbelli