Здравствуйте, Sinclair, Вы писали:
S>Что у нас является primary key в таблицах ServiceDistributionInvoice, Event, invoice?
Поле id.
S>Как определены foreign key?
Стандартным образом поля ServiceDistributionInvoice.invoiceId и Event.invoiceId являются внешними ключами, связанными с Invoice.invoiceId
E>>То есть в Invoices не будет этих полей, но они будут в таблицах City и Manager будет поле InvoiceID. S>Тогда непонятна семантика запроса.
Семантика может быть любой. Если к одной накладной привязано много городов, это может означать что затраты накладной нужно разносить на разные города. В оригинальном примере — одной накладной соответствует много (ну не совсем много, а порядка 10 максимум) услуг и много событий (тоже порядка 10 максимум), связанной с накладной. И нужно сгруппировать накладные по конкретным услугам, каждой услуге может быть привязана доля затрат, которая в сумме сходится к 1, и эту сумму после группировки нужно умножить на затраты на 1 накладную. Это просто как пример, на деле там что угодно может быть.
Или пример — накладная эта кассовый ордер. В чеке пришло 100 рублей прибыли. У меня 10 работников — уброщицы, кассир, грузчик и т.д. С ними договорились, что им не будут платить зарплату а они будут получать определенный процент от прибыли. И я хочу в запросе получить информацию сколько мне заплатить уборщицу и грузчику, если их доля в прибыли 5 процентов. Одновременно у меня куча разных услуг, и у них тоже доли уже в собестоимости. И я, как дворник, хочу поинтересоваться, как изменилась бы моя зарплата в проглом месяце если бы мы смогли перестроить услуги. И такое может хотеть уборщица, кассир, менеджер, топ менеджер и т.д.