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

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

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

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

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

textual
Листинг программы
SELECT id, title, id_children, IFNULL(id_parent, id)
FROM tbl1
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