Возможно ли создать запрос? - MySQL

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

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

Здравствуйте! Есть таблица продуктов - table1, таблица тэгов - table2 и таблица table3, записи которых состоят из ID записи, ID продукта и ID тэга. Таким образом, конкретному продукту присваиваю тэги. Если продукту с ID N1 нужно присвоить теги с ID N2 и N3, то в table3 нужно записать 2 записи - ID, N1, N2 ID, N1, N3 У меня 2 вопроса. 1. правильно ли таким образом создавать связи между таблицами? 2. возможно ли создать запрос, который выведет все записи с таблицы тэгов и еще одно поле, которое =1, если в таблице table3 есть запись с ID данного продукта и ID данного тэга, или =0, если такой записи не найдено.

Решение задачи: «Возможно ли создать запрос?»

textual
Листинг программы
SELECT t2.id , t2.tag_name
,  SUM(CASE WHEN t3.id IS NOT NULL THEN 1 ELSE 0 END)  tag_found
FROM  table2 t2
LEFT JOIN table3 t3 ON (t3.id_tag = t2.id AND t3.id_prod = :PROD_ID)

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

  1. В данном коде выполняется запрос на выборку данных из таблицы table2 и её внешнего объединения с таблицей table3 по полям id_tag и id_prod с использованием оператора LEFT JOIN.
  2. В итоговой выборке присутствуют два поля: t2.id и t2.tag_name, которые соответствуют идентификатору и названию тега из таблицы table2.
  3. Также в итоговой выборке присутствует третье поле tag_found, которое вычисляется с использованием функции SUM и оператора CASE. Если значение поля t3.id не равно NULL, то в поле tag_found записывается 1, иначе 0. Это поле отображает количество найденных тегов для каждого запися в таблице table2.
  4. В строке FROM table2 t2 указывается, что выборка данных будет производиться из таблицы table2.
  5. В строке LEFT JOIN table3 t3 ON (t3.id_tag = t2.id AND t3.id_prod = :PROD_ID) производится объединение таблиц table2 и table3 по полям id_tag и id_prod с использованием оператора ON. Также здесь указывается условие объединения, что запись из таблицы table3 будет выбираться только в том случае, если её идентификатор равен идентификатору продукта, указанному в переменной :PROD_ID.

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


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

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

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