Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Запросы MySQL - нужна помощь  (Прочитано 980 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Барабашка

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Запросы MySQL - нужна помощь
« : 07 Мая 2018, 11:13:16 »
Есть две таблицы, где rabotnik - таблица сотрудников, а otdel - таблица отделов предприятия.
Структура таблиц:
CREATE TABLE `rabotnik` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`firstname` varchar(100) NOT NULL,
`lastname` varchar(100) NOT NULL,
`middlename` varchar(100) NOT NULL,
`department_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

CREATE TABLE `otdel` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

"Лопатил" запросы SQL, но пока не нашёл. Решил, что проще спросить. Необходимы следующие два запроса:
1. Выводит название отделов, в которых имеется 5 и более сотрудников.
2. Выводит 2 столбца, в первом выводится название отдела, во втором id всех сотрудников данного отдела, перечисленные через запятую.

Второй запрос, скорее всего, можно решить без обращения ко второй таблице. departament_id в первой соответствует id во второй - это номера отделов. Оговариваюсь, потому что не знаю как быстрее и каким образом работают запросы, и как хранятся таблицы MySQL.
« Последнее редактирование: 07 Мая 2018, 11:44:32 от Барабашка »

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1117
    • Просмотр профиля
Re: Запросы MySQL - нужна помощь
« Ответ #1 : 08 Мая 2018, 10:02:02 »
Использовать транслит вместо английского языка - моветон. Даже смотреть на этом тяжко... Бррррррррр.

По делу: не вижу вообще никаких сложностей.

SELECT `o`.`name` FROM `otdel` AS `o`
WHERE (
    SELECT COUNT(`r`.`id`) FROM `rabotnik` AS `r` WHERE `r`.`department_id` = `o`.`id`
) >= 5;

И:

SELECT
`o`.`name`,
GROUP_CONCAT(`r`.`id` SEPARATOR ',')
FROM `rabotnik` AS `r`
LEFT JOIN `otdel` AS `o` ON `r`.`department_id` = `o`.`id`
GROUP BY `r`.`department_id`
ORDER BY `r`.`department_id`



Оффлайн Барабашка

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Re: Запросы MySQL - нужна помощь
« Ответ #2 : 13 Мая 2018, 14:40:02 »
MooSE,
Спасибо. Мне на SQL-запросы смотреть тяжко.
Никто и не говорил, что это сложно.
« Последнее редактирование: 13 Мая 2018, 14:47:23 от Барабашка »

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1117
    • Просмотр профиля
Re: Запросы MySQL - нужна помощь
« Ответ #3 : 13 Мая 2018, 20:40:08 »
Мне на SQL-запросы смотреть тяжко.
Если вам за это платят деньги то не вижу проблемы:)

 

Страница сгенерирована за 0.065 секунд. Запросов: 25.