Запрос из двух таблиц - MySQL (220099)
Формулировка задачи:
Есть 2 таблицы.
После запросика
Результат на картинке 1.
Вопрос: каким образом написать запрос что бы, если id_parent равен NULL, то заместо NULL было значение id. Как на картинке 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
Решение задачи: «Запрос из двух таблиц»
textual
Листинг программы
SELECT id, title, id_children, IFNULL(id_parent, id) FROM tbl1 LEFT JOIN tbl2 ON tbl1.id = tbl2.id_children;
Объяснение кода листинга программы
tbl1
иtbl2
- названия таблиц, участвующих в запросе.id
,title
,id_children
,id_parent
- названия столбцов, данные из которых будут выбраны.IFNULL(id_parent, id)
- функция, которая возвращает значение столбцаid_parent
, если оно есть, иначе возвращает значение столбцаid
.LEFT JOIN tbl2 ON tbl1.id = tbl2.id_children
- операция объединения (join) таблицtbl1
иtbl2
по столбцуid_children
с использованием оператораON
.SELECT id, title, id_children, IFNULL(id_parent, id)
- операция выбора (select) данных из таблицыtbl1
иtbl2
по указанным столбцам.- Результатом запроса будет список данных, содержащий выбранные столбцы из обеих таблиц.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д