SQL-запрос, который возвращает результаты со всеми тегами, а не с какими-либоPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 SQL-запрос, который возвращает результаты со всеми тегами, а не с какими-либо

Сообщение Anonymous »

РЕДАКТИРОВАТЬ: На этом форуме было опубликовано несколько похожих вопросов, но я не смог найти ни одного, на который был бы дан ответ, и в котором ФП не спрашивает об очень конкретной подтеме< /strong>
У меня есть три таблицы:
Таблица игр (tbl_plays), таблица возможных тегов (tbl_tags) и таблицу примененных тегов (tbl_tagged) для каждого воспроизведения. к нему может быть применен один или несколько тегов, например,

"Три слепые мыши" имеет тег "Детский театр"

"50 оттенков серого, мюзикл" имеет тег "Мюзикл" Театр» и «Контент для взрослых»

В «Музыкальном спектакле «Нарния» отмечены теги «Детский театр» и «Мюзикл». Театр»
Я пытаюсь создать запрос, который возвращает только те пьесы, у которых есть ВСЕ выбранные теги (например, если пользователь выбирает «Детский театр», результат должен содержать как «Три слепых», так и Мыши» и «Нарния, мюзикл», но следует опустить «50 оттенков серого, мюзикл», но если они выберут одновременно «Детский театр» и «Музыкальный театр», результат должен содержать только «Нарнию, мюзикл» и НЕ должен содержать одновременно «Три слепые мыши» и «50 оттенков серого, мюзикл»).
Мой текущий запрос возвращает неверные результаты. Вот мой текущий запрос, структура таблицы показана ниже.
Я использую PHP 8.3.14 и выполняю запросы с помощью MySQLi
SQL-запрос :

Код: Выделить всё

SELECT DISTINCT
tbl_plays.play_ID,
tbl_plays.play_title,
tbl_tagged.tag_ID
FROM
tbl_plays
INNER JOIN tbl_tagged ON tbl_plays.play_ID = tbl_tagged.play_ID
WHERE
tbl_tagged.tag_ID IN (1,2)
GROUP BY
tbl_plays.play_ID
HAVING
COUNT(1) = 2
Структура таблицы SQL:
tbl_plays (play_ID, play_title)

tbl_tags (tag_ID, tag_name)

tbl_tagged (tagged_ID, play_ID, tag_ID)
так, например, tbl_plays:



play_ID
play_title




1
Три слепые мыши


2
50 оттенков серого, мюзикл


3
Нарния, музыкальная пьеса


tbl_tags:



tag_ID
имя_тега




1
Детский театр


2
Музыкальный театр


3
Контент для взрослых



tbl_tagged:



tagged_ID
play_ID
tag_ID




1
1
1


2
2
2

3
2
3


4
3
1


5
33




Подробнее здесь: https://stackoverflow.com/questions/792 ... gs-not-any
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»