Запрос с JOIN и алиасами при выборке подставляется последняя запись - MySQL
Формулировка задачи:
Добрый вечер! Если честно минут 30 думал как правильно поставить вопрос. Есть две таблицы
Таблица 1 position
Ее содержимое
Таблица 2 teachers
Ее содержимое
Делаю такого вида запрос
Ожидаю получить что то типа
CREATE TABLE IF NOT EXISTS `position` ( `id_position` BIGINT(20) UNSIGNED NOT NULL, `name_position` VARCHAR(100) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
INSERT INTO `position` (`id_position`, `name_position`) VALUES (1, 'Директор'), (2, 'Зам по икт');
CREATE TABLE IF NOT EXISTS `teachers` ( `id_teacher` BIGINT(20) UNSIGNED NOT NULL, `fileName` VARCHAR(100) NOT NULL, `name` VARCHAR(100) NOT NULL, `lastName` VARCHAR(100) NOT NULL, `p1` INT(11) NOT NULL, `p2` INT(11) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `teachers` (`id_teacher`, `fileName`, `name`, `lastName`, `p1`, `p2`) VALUES (1, 'Иван', 'Ивано', 'Иванович', 1, 2);
SELECT `teachers`.`id_teacher`, `teachers`.`firstName`, `teachers`.`name`, `teachers`.`lastName`, `i1`.`name_position`, `i2`.`name_position` FROM `teachers` INNER JOIN `position` `i1` ON teachers.p1 = i1.id_position INNER JOIN `position` `i2` ON teachers.p2 = i2.id_position WHERE `id_teacher` = 1
Иван, Иванов, Иванович, Директор, Зам по икт
Но в место этого получаюИван, Иванов, Иванович, Зам по икт
Не знаю правильно ли поставил вопрос, весь день читаю и читаю про join и как алиасы ставить но запрос составить не удалось, можете помочь?Решение задачи: «Запрос с JOIN и алиасами при выборке подставляется последняя запись»
textual
Листинг программы
SELECT t.lastName, tt.np FROM teachers t LEFT JOIN ( SELECT id_teacher, GROUP_CONCAT(name_position ORDER BY tp.priority ASC SEPARATOR ', ' ) AS np FROM teachers_positions tp LEFT JOIN POSITION p ON p.id_position = tp.id_position GROUP BY tp.id_teacher ) tt ON t.id_teacher = tt.id_teacher
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д