Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как составить SQL запрос к БД и что из себя должна представлять БД?

Ник Профи (645), на голосовании 6 лет назад
Допустим есть сайт с фильмами. Есть список жанров фильмов и пользователь может выбирать фильмы какого жанра ему показать, причем он может выбрать сразу несколько жанров. А у каждого фильма есть жанр к которому он принадлежит, причем фильм может принадлежать сразу к нескольким жанрам. Как сделать так, чтобы пользователю выдавались фильмы которые принадлежат ко всем жанрам, что он указывал.

Вот пример, чтобы стало понятней:
Пользователь отмечает жанры - ФАНТАСТИКА, КОМЕДИЯ, БОЕВИК и нажимаем показать фильмы.
Ему выдается результат:

Фильм А - ФАНТАСТИКА, БОЕВИК, КОМЕДИЯ, триллер, криминал
Фильм Б - ФАНТАСТИКА, БОЕВИК, КОМЕДИЯ
Фильм В - ФАНТАСТИКА, БОЕВИК, КОМЕДИЯ, ужасы
Фильм Г - ФАНТАСТИКА, БОЕВИК, КОМЕДИЯ, триллер
Фильм Д - ФАНТАСТИКА, БОЕВИК, КОМЕДИЯ биография, военный
Фильм Е - ФАНТАСТИКА, БОЕВИК, КОМЕДИЯ
Фильм Ж - ФАЕТАСИКА, БОЕВИК, КОМЕДИЯ, исторический
И т. д.

Вот сайт на котором такая система есть - https://my-hit.org/film/a6-aa-ab/

Я не пойму как должен составляться SQL запрос в таком случае и как мне хранить жанр для каждого фильма, ведь я не могу записывать в колонку ЖАНРЫ для каждого фильма по несколько жанров.
Голосование за лучший ответ
El Boss Профи (755) 6 лет назад
примени тегирование и потом поиск по тегам
Дед Мазай Гений (58129) 6 лет назад
> ведь я не могу записывать в колонку ЖАНРЫ для каждого фильма по несколько жанров

Так сделать можно, но такая структура не соответствует 1-ой нормальной форме, потому не рекомендуется. Однако, если взвесить все достоинства и недостатки, можно и так сделать. Надо продумать, как именно хранить жанры в одной колонке: есть варианты...

Это связь много-ко-многим (фильм-жанр). Стандартная реализация - отдельная таблица с двумя колонками (код фильма, код жанра).
Пока нет структуры таблиц, обсуждать SQL-запрос бессмысленно.
Похожие вопросы