Запрос из двух таблиц - MySQL (220099)

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

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

Есть 2 таблицы.
Листинг программы
  1. CREATE TABLE IF NOT EXISTS `tbl1` (
  2. `id` INT(11) NOT NULL AUTO_INCREMENT,
  3. `title` VARCHAR(50) DEFAULT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
  6. INSERT INTO `tbl1` (`id`, `title`) VALUES
  7. (1, 'a'),
  8. (2, 'b'),
  9. (3, 'c'),
  10. (4, 'b'),
  11. (5, 'd');
  12. -- --------------------------------------------------------
  13. CREATE TABLE IF NOT EXISTS `tbl2` (
  14. `id_children` INT(11) NOT NULL DEFAULT '0',
  15. `id_parent` INT(11) NOT NULL DEFAULT '0'
  16. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  17. INSERT INTO `tbl2` (`id_children`, `id_parent`) VALUES
  18. (1, 3),
  19. (2, 3);
После запросика
Листинг программы
  1. SELECT *
  2. FROM tbl1
  3. LEFT JOIN tbl2 ON tbl1.id = tbl2.id_children
Результат на картинке 1. Вопрос: каким образом написать запрос что бы, если id_parent равен NULL, то заместо NULL было значение id. Как на картинке 2.

Решение задачи: «Запрос из двух таблиц»

textual
Листинг программы
  1. SELECT id, title, id_children, IFNULL(id_parent, id)
  2. FROM tbl1
  3. LEFT JOIN tbl2 ON tbl1.id = tbl2.id_children;

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

  1. tbl1 и tbl2 - названия таблиц, участвующих в запросе.
  2. id, title, id_children, id_parent - названия столбцов, данные из которых будут выбраны.
  3. IFNULL(id_parent, id) - функция, которая возвращает значение столбца id_parent, если оно есть, иначе возвращает значение столбца id.
  4. LEFT JOIN tbl2 ON tbl1.id = tbl2.id_children - операция объединения (join) таблиц tbl1 и tbl2 по столбцу id_children с использованием оператора ON.
  5. SELECT id, title, id_children, IFNULL(id_parent, id) - операция выбора (select) данных из таблицы tbl1 и tbl2 по указанным столбцам.
  6. Результатом запроса будет список данных, содержащий выбранные столбцы из обеих таблиц.

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут