Запрос с JOIN и алиасами при выборке подставляется последняя запись - MySQL

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

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

Добрый вечер! Если честно минут 30 думал как правильно поставить вопрос. Есть две таблицы Таблица 1 position
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, 'Зам по икт');
Таблица 2 teachers
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

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


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

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

13   голосов , оценка 3.769 из 5
Похожие ответы