powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Northwin
12 сообщений из 12, страница 1 из 1
Northwin
    #39976535
maay123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если есть у когото база Northwin вопрос задания такой...
В какие города заказы комплектовались более десяти дней?

вот мой код когда я проверил он был не правилен когда я сверил данные

Код: sql
1.
2.
3.
4.
5.
6.
SELECT t.TerritoryDescription,t.TerritoryID,o.OrderDate,DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) AS RabotaShla,o.ShipCity,o.ShipCountry
FROM (SELECT t.TerritoryDescription,t.TerritoryID FROM EmployeeTerritories et
        INNER JOIN Territories t ON t.TerritoryID=et.TerritoryID) t, Employees e
INNER JOIN Orders o ON o.EmployeeID=e.EmployeeID 
WHERE DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) =10
ORDER BY t.TerritoryDescription



если взять по частям то:

Код: sql
1.
2.
3.
4.
SELECT t.TerritoryDescription,t.TerritoryID
FROM (SELECT t.TerritoryDescription,t.TerritoryID FROM EmployeeTerritories et
        INNER JOIN Territories t ON t.TerritoryID=et.TerritoryID) t
ORDER BY t.TerritoryDescription



эта связь мне выведит все 49 записей которые связаные из табличек teritores , employyesteritoris, employye
и то что мне соединило это все я хочу связать с табличкой orders
помогите пжл>
С уважением Владимир
...
Рейтинг: 0 / 0
Northwin
    #39976552
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maay123, а как Вы связываете территории и остальные таблицы? По моему никак.
В результате у Вас получается декартового умножение

у меня нет указангой БД, но, скорее всего в таблице территорий должен быть идентификатор покупателя

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT t.TerritoryDescription,t.TerritoryID,o.OrderDate,DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) AS RabotaShla,o.ShipCity,o.ShipCountry
FROM (SELECT et.EmployeeID , t.TerritoryDescription,t.TerritoryID FROM EmployeeTerritories et
        INNER JOIN Territories t ON t.TerritoryID=et.TerritoryID) t
INNER JOIN  Employees e ON e.EmployeeID=t.EmployeeID 
INNER JOIN Orders o ON o.EmployeeID=e.EmployeeID 
WHERE DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) =10
ORDER BY t.TerritoryDescription
...
Рейтинг: 0 / 0
Northwin
    #39976784
maay123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да спасибо вышло то что я хотел из 49 записей 47, а как вывести все 49 записей со значениями null? просто везде перепробовал inner join заменил по быстрому на full join и заменял и на left и right также 47 записей HandKot,
...
Рейтинг: 0 / 0
Northwin
    #39976913
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не подойдет, что ли?
Код: sql
1.
2.
select city, count(*) from orders
group by city having count(*) > 10
...
Рейтинг: 0 / 0
Northwin
    #39976914
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, пардон, не так задачу прочитал.
...
Рейтинг: 0 / 0
Northwin
    #39976927
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maay123
а как вывести все 49 записей со значениями null? просто везде перепробовал inner join заменил по быстрому на full join и заменял и на left и right также 47 записей

любое условие в WHERE превращает любой JOIN в INNER

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT t.TerritoryDescription,t.TerritoryID,o.OrderDate,DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) AS RabotaShla,o.ShipCity,o.ShipCountry
FROM (SELECT et.EmployeeID , t.TerritoryDescription,t.TerritoryID FROM EmployeeTerritories et
        INNER JOIN Territories t ON t.TerritoryID=et.TerritoryID) t
INNER JOIN  Employees e ON e.EmployeeID=t.EmployeeID 
LEFT JOIN Orders o ON o.EmployeeID=e.EmployeeID AND DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) =10
 
ORDER BY t.TerritoryDescription
...
Рейтинг: 0 / 0
Northwin
    #39977002
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильное название базы
Northwindows95
...
Рейтинг: 0 / 0
Northwin
    #39977120
maay123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо HandKot,
...
Рейтинг: 0 / 0
Northwin
    #39977162
maay123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я чуть посидел подумал и тот же самый код который вы мне исправили и подсказали как правильно надо было сделать
я написал его чуть по другом тот же самый код те же самые данные:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
--###Новый###
SELECT t.TerritoryDescription,t.TerritoryID,o.OrderDate,DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) AS RabotaShla,o.ShipCountry,o.ShipCity
FROM Employees e
INNER JOIN EmployeeTerritories et ON e.EmployeeID = et.EmployeeID
INNER JOIN Territories t ON et.TerritoryID = t.TerritoryID
INNER JOIN Orders o ON e.EmployeeID = o.EmployeeID
and DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) =10
ORDER BY t.TerritoryDescription


Мне интересно ваше мнение по поводу данного кода насколько он лучше предыдущего:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
--###Старый###
SELECT t.TerritoryDescription,t.TerritoryID,o.OrderDate,DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) AS RabotaShla,o.ShipCity,o.ShipCountry
FROM (SELECT et.EmployeeID , t.TerritoryDescription,t.TerritoryID FROM EmployeeTerritories et
        INNER JOIN Territories t ON t.TerritoryID=et.TerritoryID) t
INNER JOIN  Employees e ON e.EmployeeID=t.EmployeeID 
INNER JOIN Orders o ON o.EmployeeID=e.EmployeeID 
WHERE DATEDIFF(DAY,o.ShippedDate,o.RequiredDate) =10
ORDER BY t.TerritoryDescription


или может, мой код новый легче по написанию , или есть различие какое-то просто я например мучался в selecte после from а потом с одним из inner join который вы мне как раз и подсказали.Буду благодарен вам если вы выскажите свое мнение по поводу 2х кодов
С уважением Владимер
HandKot,
...
Рейтинг: 0 / 0
Northwin
    #39977261
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?

Код: sql
1.
2.
select distinct City from Orders
where datediff(day, ShippingDate, OrderDate) > 10



смотрю все выше и никак не могу понять зачем тут джойны с территориями и тем более с работниками, если в задаче речь про города?
...
Рейтинг: 0 / 0
Northwin
    #39977459
maay123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вы правы я Employee спутал почему-то с Customers но выше я написал что я хочу вывести в таком порядке это все.
Так как связь у меня многие ко многому в Employee -- EmployeeTerritories -- Territories я вывел данные оттуда которые соответствуют друг другу и ко всем этим данным я привязал данные с Orders которые соответствовали выведенным данным. Так как я не мог на прямую с Orders связать с Territories + моя задача была понять как же мне связываться с другими таблицами например вот:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT c.ContactName,c.City,c.Address,c.Phone,o.OrderDate,o.ShippedDate,p.ProductName
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID
INNER JOIN [Order Details] od ON o.OrderID = od.OrderID
INNER JOIN Products p ON od.ProductID = p.ProductID
order by c.ContactName,o.OrderDate


мне захотелось рядом подставить продукты которые они заказали а чтоб это сделать мне надо через Order Details топать к Products . Надеюсь я все правильно объяснил и внятно понятно . Если в моей логике была ошибка и я сам себя вожу в заблуждение прошу исправить например данный код я проверил с 0я взял конкретную цель например c.ContactName и начал с 0я следовать что он заказал и как она связала правильно или нет по моему наблюдению все вышло правильно :D fkthat,
...
Рейтинг: 0 / 0
Northwin
    #39977461
maay123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Northwin
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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