Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Rayden
12 / 12 / 3
Регистрация: 08.01.2012
Сообщений: 83

Group concat

09.09.2012, 18:08. Показов 1556. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть 3 таблицы:

работники
SQL
1
2
3
4
5
6
7
8
CREATE TABLE `employee` (
    `em_id` INT(10) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(50) NOT NULL,
    `sname` VARCHAR(50) NOT NULL,
    `salary` FLOAT(7,2) UNSIGNED NOT NULL,
    `info` TEXT NOT NULL,
    PRIMARY KEY (`em_id`)
)
должности
SQL
1
2
3
4
5
6
CREATE TABLE `roles` (
    `r_id` TINYINT(4) NOT NULL AUTO_INCREMENT,
    `r_name` VARCHAR(255) NOT NULL,
    `info` TEXT NOT NULL,
    PRIMARY KEY (`r_id`)
)
их отношения
SQL
1
2
3
4
5
6
7
8
9
10
CREATE TABLE `employee_role` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `em_id` INT(10) NOT NULL,
    `r_id` TINYINT(4) NOT NULL,
    PRIMARY KEY (`id`),
    INDEX `em_id` (`em_id`),
    INDEX `r_id` (`r_id`),
    CONSTRAINT `employee_role_ibfk_1` FOREIGN KEY (`em_id`) REFERENCES `employee` (`em_id`),
    CONSTRAINT `employee_role_ibfk_2` FOREIGN KEY (`r_id`) REFERENCES `roles` (`r_id`)
)
На выход нужно сделать:
name, sname, r_name('т.е. его должность'), salary

Проблема вот в чем, у одного человека может быть несколько должностей, мне нужно сделать что-бы должности выводились в 1 поле через запятую.
Склеил таблицы инерджойнами, попытался использовать GROUP_CONCAT, неполучается добиться нужного результата (скорее всего из-за моей криворукости). Буду благодарен любой помощи, надеюсь на ваши прямые руки. Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2012, 18:08
Ответы с готовыми решениями:

GROUP BY ошибка
Определить число посещений каждого человека по имени nik вывести id человека (id), имя(firstname),число посещений SELECT id,...

order by и group by
Привет, есть таблица. id_user-------id_message ---1--------------1 ---1--------------2 ---1--------------3 ---2--------------5...

Выборка с GROUP BY
есть таблица bets с полями game, mult, sum Нужно вытащить сумму полей sum при одинаковых mult и только у указанных game. Что я и...

2
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
09.09.2012, 18:52
MySQL
1
2
3
4
5
6
7
8
9
10
11
SELECT
  `e`.`name`,
  `e`.`sname`,
  GROUP_CONCAT(`r`.`r_name` ORDER BY `r`.`r_name` SEPARATOR ', ') AS `roles`,
  `e`.`salary`
FROM `employee` AS `e`
  JOIN `employee_role` AS `er`
    ON `er`.`em_id` = `e`.`em_id`
  JOIN `roles` AS `r`
    ON `r`.`r_id` = `er`.`r_id`
GROUP BY `e`.`em_id`;
1
 Аватар для Rayden
12 / 12 / 3
Регистрация: 08.01.2012
Сообщений: 83
09.09.2012, 18:54  [ТС]
спасибо большое! Делал тоже самое, да вот с синтаксисом конката намудрил :[
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2012, 18:54
Помогаю со студенческими работами здесь

GROUP BY и COUNT
Привет, такой вопрос: есть табличка id,count,name 1 3 имя1 1 2 имя1 1 2 имя2 делаю такой запрос: SELECT COUNT(name)...

Применение GROUP BY
Здравствуйте! Подскажите кто может ,пожалуйста, не очень специалисту в sql, как сделать следующие вещи: Имеем таблицу вида: id ...

Select и group by
Доброго времени суток. Как известно, если поле включено в список выбора, то оно должно присутствовать и в группировке. Получается что...

GROUP BY по условию
В результирующем наборе есть n'ое количество записей которые нужно сгруппировать. Проблема в том, что при группировке в результате остается...

Подкорректировать GROUP BY
Здравствуйте! В случае, если повторяются значения в поле `phone`, то данную строку выводить не нужно. Тобишь, мне нужно вывести строки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru