powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SOS!Помогите разобраться с задачкой
25 сообщений из 26, страница 1 из 2
SOS!Помогите разобраться с задачкой
    #39613532
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, ребята!
Помогите , пожалуйста разобраться как решить задачку!
Я начинающий спец по выборке SQL запросов, не все сразу становится понятно, поэтому прошу вас о помощи.
Условия задачки такие :
Select all Employees who did not make any orders before July 8th 1996 (including);
мой половинчатый запрос таков
SELECT LastName,FirstName
FROM Employees JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID
WHERE OrderDate <= '1996-07-08' и понимаю, что нужно применить функцию COUNT на условие (who did not make any orders) но не понимаю как применить? подзапрос делать?
ниже ссылка , где можно посмотреть связи таблиц
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613551
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikav123 who did not make any orders before July 8th 1996
"нет человека, нет проблемы.."
нет заказа - нет даты заказа (OrderDate is null) - оставьте COUNT в покое..
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613556
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikav123,


1)

SELECT LastName,FirstName
FROM Employees LEFT JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID
WHERE OrderDate <= '1996-07-08' and Orders.EmployeeID is null


2)
SELECT LastName,FirstName
FROM Employees
WHERE not exists (select 1 from Orders where Employees.EmployeeID = Orders.EmployeeID and OrderDate <= '1996-07-08')

ps
если гугль правильно перевел

Выберите всех сотрудников, которые не делали заказы до 8 июля 1996 года (в том числе);

.....
stax
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613558
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

ой
... OrderDate <= date '1996-07-08' ...

....
stax
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613567
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax, по вашему запросу нет результатов никаких...
было добавлено и date, LEFT,and Orders.EmployeeID is null
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613570
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viewer, ваша подсказка также не работает(((
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613571
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
database said- no result
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613574
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikav123Viewer, ваша подсказка также не работает(((
мне лень смотреть структуру таблиц, так что это была не подсказка а лишь намёк..
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613578
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
понятно)
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613581
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
SELECT * FROM Employees 
WHERE NOT EXISTS (
SELECT * FROM Orders
 WHERE Employees.EmployeeID = Orders.EmployeeID and DATE(Orders.OrderDate) <= DATE("1996-07-08")
);



MySQL такой MySQL...
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613585
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxой


Stax, ой тут в плане медитации над разницей между ON и WHERE в OUTER JOIN. Медитируй.

SY.
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613596
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo ,благодарю, есть результат))) а почему нельзя обыграть вариант соператорами is null ?
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613600
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikav123Dshedoo ,благодарю, есть результат))) а почему нельзя обыграть вариант соператорами is null ?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT  Employees.EmployeeID
  FROM      Employees
        LEFT JOIN
            Orders
          ON     Employees.EmployeeID = Orders.EmployeeID 
             AND
                 OrderDate <= date '1996-07-08'
  WHERE Orders.EmployeeID is null
/



Например:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SQL> with employees as (
  2                     select level EmployeeID from dual connect by level <= 4
  3                    ),
  4          orders as (
  5                     select 1 EmployeeID,date '1996-07-01' OrderDate from dual union all
  6                     select 1,sysdate from dual union all
  7                     select 2,date '1996-07-01' from dual union all
  8                     select 3,sysdate from dual
  9                    )
 10  SELECT  Employees.EmployeeID
 11    FROM      Employees
 12          LEFT JOIN
 13              Orders
 14            ON     Employees.EmployeeID = Orders.EmployeeID 
 15               AND
 16                   OrderDate <= date '1996-07-08'
 17    WHERE Orders.EmployeeID is null
 18  /

EMPLOYEEID
----------
         4
         3

SQL> 



SY.
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613602
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikav123Stax, по вашему запросу нет результатов никаких...
было добавлено и date, LEFT,and Orders.EmployeeID is null

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> ed
Wrote file afiedt.buf

  1  with EMPLOYEES (EMPLOYEEID,FIRSTNAME) as (
  2  select 100, 'Steven' from dual union all
  3  select 101, 'Neena' from dual union all
  4  select 102, 'Lex' from dual union all
  5  select 103, 'Alexander' from dual)
  6  ,orders (orderId,EmployeeID,OrderDate) as (
  7  select 1,100,date '1996-07-08' from dual union all
  8  select 2,101,date '1997-07-08' from dual union all
  9  select 3,102,date '1995-07-08' from dual union all
 10  select 4,102,date '1999-07-08' from dual)
 11  SELECT FirstName
 12  FROM Employees LEFT JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID and OrderDate <= date '1996-07-08'
 13* WHERE  Orders.EmployeeID is null
SQL> /

FIRSTNAME
---------
Alexander
Neena



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> ed
Wrote file afiedt.buf

  1  with EMPLOYEES (EMPLOYEEID,FIRSTNAME) as (
  2  select 100, 'Steven' from dual union all
  3  select 101, 'Neena' from dual union all
  4  select 102, 'Lex' from dual union all
  5  select 103, 'Alexander' from dual)
  6  ,orders (orderId,EmployeeID,OrderDate) as (
  7  select 1,100,date '1996-07-08' from dual union all
  8  select 2,101,date '1997-07-08' from dual union all
  9  select 3,102,date '1995-07-08' from dual union all
 10  select 4,102,date '1999-07-08' from dual)
 11  SELECT FirstName
 12  FROM Employees
 13* WHERE not exists (select 1 from Orders where Employees.EmployeeID = Orders.EmployeeID and OrderDate <= date'1996-07-08')
SQL> /

FIRSTNAME
---------
Alexander
Neena




.....
stax
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613607
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikav123Dshedoo ,благодарю, есть результат))) а почему нельзя обыграть вариант соператорами is null ?
Можно. Обыгрывай)
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613627
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYStaxой


Stax, ой тут в плане медитации над разницей между ON и WHERE в OUTER JOIN. Медитируй.

SY.

исправил (спешка к добру не приводит)

.....
stax
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613760
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY, спасибо! очень помогли))
а можно еще у вас попросить объяснить логику почему именно LEFT JOIN?
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613774
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax, благодарю !!
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613777
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikav123объяснить логику почему именно LEFT JOIN?

LEFT OUTER JOIN возвращает ВСЕ строки левой таблицы даже если в правой таблице соответствующей строки нет. В таком случае строка левой таблицы соединяется с гипотетической строкой правой таблицы где все поля NULL. Посему когда мы делаем LEFT OUTER JOIN по EmployeeID и OrderDate <= date '1996-07-08' то для всех Employee.EmployeeID для которых нет строк в Orders с таким-же EmployeeID и OrderDate <= date '1996-07-08' LEFT OUTER JOIN вернет NULL для всех полей Orders. После чего с помошью WHERE Orders.EmployeeID is NULL мы выбираем именно эти строки.

SY.
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613779
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще одно решение через MINUS:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
 SELECT  Employees.EmployeeID
   FROM  Employees
MINUS
 SELECT  EmployeeID
   FROM  Orders
   WHERE OrderDate <= date '1996-07-08'
/



SY.
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613781
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY! как для новичка, мне еще тренироваться и тенироваться с такого плана решениями))
может вы еще сможете подсказать что делаю не так в другой уже задаче?)))так свзять с 4 таблицами насколько я верно понимаю...

Вот условие
Display all customers information who ordered "Tofu" product, order results from highest customer id to lowest
вот мое решение
SELECT CustomerName,ContactName,Address,Ci ty,PostalCode,Country
FROM Customers JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE OrderID = (SELECT OrderID FROM OrderDetails JOIN Products ON OrderDetails.ProductID = Products.ProductID WHERE ProductName = 'Tofu')
ORDER BY CustomerID DESC
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613783
nikav123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БД ругается : "Error 1: could not prepare statement (1 ambiguous column name: CustomerID)"
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613816
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikav123,
В запросе
Код: plsql
1.
2.
3.
4.
SELECT CustomerName,ContactName,Address,City,PostalCode,Country 
FROM Customers JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
WHERE OrderID = (SELECT OrderID FROM OrderDetails JOIN Products ON OrderDetails.ProductID = Products.ProductID WHERE ProductName = 'Tofu') 
ORDER BY CustomerID DESC


Используется дважды столбец CustomerID , как от таблицы Customers так и Orders
Укажите явно требуемый столбец в конструкции ORDER BY.
Например , в виде ORDER BY Customers.CustomerID desc
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613825
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikav123,
авторDisplay all customers information who ordered "Tofu" product, order results from highest customer id to lowest

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT C.CustomerName,C.ContactName,C.Address,C.City,C.PostalCode,C.Country
 FROM CUSTOMERS C
 WHERE EXISTS
   (
      SELECT 1 FROM PRODUCTS P WHERE P.CUSTOMER_ID=C.CUSTOMER_ID AND 
        P.ProductName = 'Tofu'
   )
  ORDER BY C.CUSTOMER_ID DESC
...
Рейтинг: 0 / 0
SOS!Помогите разобраться с задачкой
    #39613839
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в каком таком дизайнe в таблице товаров окажется поле покупатель?

SY.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SOS!Помогите разобраться с задачкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]