Мне дали задание реализовать SQL запросы:
1. Напишите запрос, который выберет всех сотрудников из таблицы "Employees", у которых зарплата больше 50000.
2. Напишите запрос, который выведет информацию о продуктах из таблицы "Products", у которых количество на складе меньше 10.
3. Создайте запрос, который выберет все заказы из таблицы "Orders", сделанные после определенной даты (например, после 01.01.2022).
4. Напишите запрос, который выберет сотрудников из таблицы "Employees", у которых зарплата больше 50000 и которые сделали заказы на продукты с количеством на складе меньше 10.
5. Напишите запрос, который выведет информацию о продуктах из таблицы "Products", у которых количество на складе меньше 5 и которые были заказаны сотрудниками с зарплатой меньше 40000.
6. Создайте запрос, который выберет все заказы из таблицы "Orders", сделанные после определенной даты (например, после 01.01.2022) и содержащие продукты, заказанные сотрудниками с именем, начинающимся на букву "J".
7. Напишите запрос, который выберет сотрудников из таблицы "Employees", у которых зарплата больше средней зарплаты всех сотрудников и которые сделали заказы после 01.01.2022 на продукты с количеством на складе больше 15.
8. Создайте запрос, который выберет все заказы из таблицы "Orders", сделанные сотрудниками с зарплатой меньше 45000 и содержащие продукты, у которых количество на складе больше 20.
9. Напишите запрос, который выберет сотрудников из таблицы "Employees", у которых зарплата оканчивается на цифру "5" и которые сделали заказы после определенной даты (например, после 01.01.2022) на продукты, у которых количество на складе меньше 10.
Я написал:
SELECT * FROM Employees WHERE salary > 50000;
SELECT * FROM Products WHERE quantity_in_stock < 10;
SELECT * FROM Orders WHERE order_date > '2022-01-01';
SELECT e.* FROM Employees e
JOIN Orders o ON e.employee_id = o.employee_id
JOIN Products p ON o.product_id = p.product_id
WHERE e.salary > 50000 AND p.quantity_in_stock < 10;
SELECT p.* FROM Products p
JOIN Orders o ON p.product_id = o.product_id
JOIN Employees e ON o.employee_id = e.employee_id
WHERE p.quantity_in_stock < 5 AND e.salary < 40000;
SELECT * FROM Orders o
JOIN Employees e ON o.employee_id = e.employee_id
WHERE o.order_date > '2022-01-01' AND e.name LIKE 'J%';
SELECT e.* FROM Employees e
JOIN Orders o ON e.employee_id = o.employee_id
JOIN Products p ON o.product_id = p.product_id
WHERE e.salary > (SELECT AVG(salary) FROM Employees) AND p.quantity_in_stock > 15;
SELECT * FROM Orders o
JOIN Employees e ON o.employee_id = e.employee_id
JOIN Products p ON o.product_id = p.product_id
WHERE e.salary < 45000 AND p.quantity_in_stock > 20;
Мне выдает:
SELECT e.* FROM Employees e
JOIN Orders o ON e.employee_id = o.employee_id
JOIN Products p ON o.product_id = p.product_id
WHERE e.salary > 50000 AND p.quantity_in_stock < 10 LIMIT 0, 25
Ответ MySQL: Документация
#1054 - Неизвестный столбец 'o.product_id' в 'on clause'
Что было сделано до этого:
CREATE TABLE Employees (
employee_id INT PRIMARY KEY,
name VARCHAR(50),
salary DECIMAL(10, 2)
);
CREATE TABLE Products (
product_id INT PRIMARY KEY,
name VARCHAR(50),
quantity_in_stock INT
);
У вас нет связи между таблицами Orders и Products.
Либо потеряли свойство, для обеспечения связи "один-ко-многим":
(Если один заказ может содержать в себе строго один продукт)