Re[3]: Есть ли базы, понмающие подобный SQL:
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.04.18 05:14
Оценка:
Здравствуйте, elmal, Вы писали:
S>>Непонятно, что значит "1 ко многим". В примере почему-то приведено наоборот — "многие к одному", т.к. джойн идёт по primary key основной таблицы, а не по её foreign keys.
E>Именно 1 ко многим. В данном примере это означает, что одной Invoice соответствует много CityID и ManagerID.
Что у нас является primary key в таблицах ServiceDistributionInvoice, Event, invoice?
Как определены foreign key?

E>То есть в Invoices не будет этих полей, но они будут в таблицах City и Manager будет поле InvoiceID.

Тогда непонятна семантика запроса.
Вот у меня есть invoice с некоторой суммой, который привязан к десяти "городам".
У городов есть классифицирующий признак — ну, например, регион. Связь — многие-к-одному, то есть в одном регионе много городов. Пусть у нас сумма инвойса = 100р, в регионе 1 — три города, в регионе 2 — семь городов.
Берём, считаем "сумму" по регионам:
select city.RegionID, sum(i.Amount) from city 
   inner join Invoice i on city.invoiceID = i.ID
   group by city.RegionID

Получим что-то типа
id 
-- -----
 1   300
 1   700

Физический смысл этого от меня ускользает.
Можно посчитать это чуть быстрее, если сделать
select c.regionId, invoiceCount*i.Amount as Totals from
(select invoiceId, regionId, count(*) as invoiceCount from city group by invoiceId, regionId) c
inner join invoice i on i.id = c.invoiceId
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.