Запрос из связной таблицы, когда id может быть пустым - MySQL

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

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

Добрый день. Есть таблица table_1
id
id_table_2
и таблица table_2
id_table_2
name
Таблица table_2 связана с table_1 соотношение один ко многим. Как сделать запрос select, если id_table_2 в table_1(..., NULL) может быть NULL? Пока делаю так:
SELECT table_1.`id`, table_2.`name` 
FROM `table_1`, `table_2`
WHERE 
CASE WHEN table_1.`id_table_2` IS NOT NULL 
    THEN table_1.`id_table_2` = table_2.`id_table_2`
END
Что написать в ELSE, или как изменить запрос?

Решение задачи: «Запрос из связной таблицы, когда id может быть пустым»

textual
Листинг программы
SELECT 
    g.`id`, 
    first_name.`name` AS name_1, 
    second_name.`name` AS name_2 
FROM 
    `table_1` AS g 
    LEFT JOIN `table_2` AS first_name ON g.`id_table_2` = first_name.`id_table_2` 
    LEFT JOIN `table_2` AS second_name ON g.`id_table_2_num2` = second_name.`id_table_2`

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

  1. Запрос написан на языке SQL.
  2. Запрос использует оператор SELECT для выбора данных из таблицы.
  3. В запросе выбираются следующие поля: id из таблицы table_1 (обозначено как g.), name из таблицы table_2 (обозначено как first_name. и second_name.).
  4. Для связи таблиц используется оператор LEFT JOIN.
  5. Таблица table_1 (обозначено как g) связана с таблицей table_2 (обозначено как first_name) по полю id_table_2.
  6. Таблица table_1 (обозначено как g) связана с таблицей table_2 (обозначено как second_name) по полю id_table_2_num2.
  7. В результате запроса получаем следующие поля: id, name_1, name_2.
  8. Запрос не содержит условий, которые могут быть выполнены или не выполнены (например, условия WHERE).
  9. Запрос использует связную структуру таблиц, что позволяет получить данные даже в случае, если одно из соединений не найдет соответствующей записи в связанной таблице.
  10. Запрос не содержит подзапросов, вложенных запросов или других конструкций, которые могут усложнить его понимание или выполнение.
  11. Запрос использует простую структуру таблиц без вложенных таблиц или сложных связей.
  12. Запрос не содержит временных таблиц или представлений.
  13. Запрос не содержит UDF (функций пользовательского уровня) или других сложных функций.
  14. Запрос не содержит операторов INSERT, UPDATE или DELETE.
  15. Запрос не содержит операторов DROP или CREATE для таблиц или представлений.
  16. Запрос не содержит операторов COMMIT или ROLLBACK для транзакций.
  17. Запрос не содержит операторов EXPLAIN или SHOW для получения информации о запросе.
  18. Запрос не содержит операторов GROUP BY, HAVING или WINDOW.
  19. Запрос не содержит операторов UNION или INTERSECT.
  20. Запрос не содержит операторов DISTINCT или GROUP_CONCAT.

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


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

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

9   голосов , оценка 4 из 5
Похожие ответы