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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

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

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Запросы MySQL - нужна помощь
« : 07 Май 2018, 12: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, 12:44:32 от Барабашка »

Оффлайн MooSE

  • Активист
  • *
  • Сообщений: 847
    • Просмотр профиля
Re: Запросы MySQL - нужна помощь
« Ответ #1 : 08 Май 2018, 11: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`



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

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

Оффлайн MooSE

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

 

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