Прошу расширить понимание для выполнения задачи - MySQL
Формулировка задачи:
У меня появилась задача освежить знания по работе с базами данных, а конкретней в написании правильных sql запросов.
Тут же поднял на убунте mysql и начал изучать.
В качестве учебников начал использовать w3schools, mysql, а так же тему про оператор JOIN
Есть таблицы и команды что по заданию ввел в консоль mysql
Так же есть задания для формирования sql запросов
Но мне не понятно, как в даном случае сортировать по столбцу одоной таблицы и столбцу другой таблицы
CREATE TABLE DEPT ( -- Филиалы фирмы DEPTNO integer NOT NULL, -- Номер филиала DNAME varchar (14), -- Название филиала LOC varchar (13), -- Город, в котором расположен филиал CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY ( DEPTNO )) ; CREATE TABLE EMP ( -- Сотрудники EMPNO integer NOT NULL, -- Табельный номер ENAME varchar (10),-- Фамилия JOB varchar (9),-- Должность MGR integer, -- Табельный номер руководителя HIREDATE DATE,-- Дата приема на работу SAL double precision,-- Заработная плата DEPTNO integer NOT NULL, -- Номер отдела CONSTRAINT EMP_PRIMARY_KEY PRIMARY KEY ( EMPNO ) ) ; ALTER TABLE EMP ADD CONSTRAINT EMP_FOREIGN_KEY FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO) ; ALTER TABLE EMP ADD CONSTRAINT EMP_SELF_KEY FOREIGN KEY (MGR) REFERENCES EMP (EMPNO) ;
- Вывести список всех филиалов, упорядочив их по местоположению, а затем по количеству сотрудников.
- Вывести список всех филиалов с фамилиями руководителей (руководителем считается сотрудник, подчиняющийся работнику другого филиала или никому не подчиняющийся).
- Определить табельный номер для вновь принимаемого на работу сотрудника. Табельный номер определяется как минимальный "свободный".
- Вывести (для всех филиалов) список вида Наименование филиала | Самый высокооплачиваемый сотрудник | Самый низкооплачиваемый сотрудник ... ... ... ... ... ...
И все это используя только одно sql предложение на каждый номер задания.
БД чисто тестовая, по этому настоящими данными или генераторами не заполнялась, вносил данные только вручную, несколько строк для второй таблицы, только что бы хоть как то оперировать данными и понимать.Вопросы:
По 1му, как вывести список филиалов, и упорядочить по местоположению у меня получилось такSELECT * FROM DEPT ORDER BY LOC;
(упорядочив их по местоположению, а затем по количеству сотрудников)
. То есть трудность в том что бы понять как сформировать запрос, где идет взаимодействие между разными таблицами. По 3му тоже не ясно с какой стороны подступить. 4е логку понимаю но не знаю как записать синтаксически верно.С этим всем я бы разбирался сам по самоучителям и учебнику, но это задание ограничено по времени до вторника, по этому решил обратиться уже с надеждой разобраться и понять как можно скорее)
Решение задачи: «Прошу расширить понимание для выполнения задачи»
textual
Листинг программы
SELECT DNAME,ec FROM DEPT JOIN (SELECT DEPTNO,COUNT(*) ec FROM EMP GROUP BY DEPTNO) ee ON DEPT.DEPTNO=ee.DEPTNO ORDER BY LOC,ec;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д