@ebaysher

Может кто подскажет правильно ли составил запрос sql?

Есть три таблицы: CUSTOMERS (ID, NAME, MANAGER_ID); MANAGERS (ID, NAME); ORDERS (ID, DATE, AMOUNT, CUSTOMER_ID). Написать запрос, который выведет имена Customers и их SalesManagers, которые сделали покупок на общую сумму больше 10000 с 01.01.2013.

SELECT customers.name, managers.name
FROM customers JOIN managers JOIN orders
ON (managers.id = orders.customers_id) and (orders.date > 01.01.2013) and (orders.amount > 10000)

Никогда не изучал sql , просто нужно сейчас решить несколько заданий
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Запрос неверен синтаксически.
1. Каждый JOIN обязан иметь свой ON. Это только MySQL/MariaDB лояльно относится к таким вещам.
2. Литералы даты должны быть обрамлены кавычками - это как минимум. А кроме того, формат литерала даты должен чётко соответствовать таковому для используемой СУБД - возможно, даже нужно использовать функцию преобразования строкового значения в дату.
3. Формально - запрос должен быть завершён символом точки с запятой.

Запрос неверен логически.
1. Отсутствует связь между заказом/менеджером и покупателем.
2. Отсутствует подсчёт общей суммы заказов покупателя.
3. Не предусмотрен вариант, когда у покупателя посередь периода сменился менеджер (менеджеры увольняются, да...). Впрочем, он не предусмотрен и в задании...
4. Задание требует "с 01.01.2013", т.е. включительно, а в условии отбора используется строгое неравенство.

Всё остальное - правильно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы