Запрос из двух таблиц - 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
по указанным столбцам.- Результатом запроса будет список данных, содержащий выбранные столбцы из обеих таблиц.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д