Несколько условий в запросе - MySQL (220471)

Узнай цену своей работы

Формулировка задачи:

Имеется: Таблицы films, genres, genres_films films содержит id, title genres содержит id, name genres_films содержит film_id, genre_id Нужно выбрать название фильма, по нескольким жанрам (чтобы он содержал несколько указанных жанров). Получилось только что-то такое:
SELECT DISTINCT films.title FROM films , genres , genres_films WHERE films.id = genres_films.film_id AND genres_films.genre_id = genres.id AND genres.name = %s AND genres.name = %s
Проблема в том, что когда мы ищем запись по одному жанру, то все работает хорошо, но когда добавляем еще одно, то результата никакого нету

Решение задачи: «Несколько условий в запросе»

textual
Листинг программы
SELECT DISTINCT films.title FROM films , genres , genres_films WHERE films.id = genres_films.film_id AND genres_films.genre_id = genres.id AND (genres.name = %s OR genres.name = %s) HAVING COUNT(1) = 2

Объяснение кода листинга программы

В представленном коде выполняется запрос к базе данных, который имеет следующую структуру:

  1. SELECT DISTINCT films.title - выбирается уникальное значение столбца films.title
  2. FROM films - указывается таблица, из которой производится выборка
  3. , genres , genres_films - используются запятые для объединения трех таблиц (films, genres, genres_films)
  4. WHERE films.id = genres_films.film_id - устанавливается связь между таблицами по полю film_id из таблицы genres_films и id из таблицы films
  5. AND genres_films.genre_id = genres.id - устанавливается связь между таблицами по полю genre_id из таблицы genres_films и id из таблицы genres
  6. AND (genres.name = %s OR genres.name = %s) - устанавливаются условия для выборки, где значения переменных %s и %s сравниваются со значением столбца genres.name
  7. HAVING COUNT(1) = 2 - применяется условие HAVING, которое проверяет, что количество записей, удовлетворяющих условиям в WHERE, равно 2 В итоге запрос выбирает уникальные названия фильмов из таблицы films, которые относятся к двум определенным жанрам.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5