Как одна структура запрашивает объединение основных подробных записей за определенный период - PullRequest
0 голосов
/ 08 мая 2018

Рассмотрим следующий сценарий (если он помогает думать о Northwind Orders / OrderDetails).

У меня есть две таблицы LandingHeaders и LandingDetails, которые записывают подробности о коммерческих поездках на рыбалку. Как правило, в течение недели рыболовное судно может совершать несколько поездок в море, и в результате получается несколько записей LandingHeader / LandingDetail.

В конце каждой недели компания, которая покупает результаты этих рыболовных поездок, должна определить стоимость каждой посадки, произведенной каждым судном, а затем выплачивать владельцу этого судна любые причитающиеся деньги. Чтобы добавить веселья, есть несколько судов, принадлежащих одному и тому же лицу, поэтому компания, покупающая рыбу, предпочла бы, чтобы стоимость всех выловов всех судов, принадлежащих данному человеку, была объединена в единый платеж.

До настоящего времени информация, необходимая для выполнения этой задачи, распространялась не только на простую структуру таблицы основных данных, и поэтому требовала нескольких хранимых процедур (наряду с разумным использованием словарей в основном приложении, выполняющем работу) для достичь желаемого конечного результата. Внешние обстоятельства вне моего контроля вынудили некоторые серьезные изменения в базе данных, и я воспользовался возможностью, чтобы реструктурировать таблицу LandingHeader так, чтобы она содержала всю необходимую информацию, которая может понадобиться.

Из таблицы заголовка посадки мне нужно записать следующие поля;

  1. LandingHeaderId типа sql int
  2. VesselOwnerId типа sql int
  3. LandingDate (просто используется как часть запроса в реальности) типа sql datetime

Из таблицы LandingDetails мне нужно записать следующие поля;

  1. ProductId типа sql int
  2. Количество десятичных чисел типа sql (10,2)
  3. Цена за единицу товара типа sql

Я думал о создании запроса, который принимает параметры VesselOwnerID, SartDate и EndDate.

В качестве выходных данных мне нужно знать, какие LandingId связаны с владельцем, и общее количество для каждого отдельного ProductId (вместе с UnitPrice, которое будет одинаковым для каждого ProductId за выбранный период), распределенное по различным посадочным деталям, связанным с LandingHeaders за указанный период.

Я размышлял по строкам выходных строк, которые могли бы выглядеть примерно так; enter image description here

Может ли это быть сделано из стандартного отношения таблицы типа "основная - подробная информация" или мне все равно придется прибегнуть к нескольким хранимым процедурам.

Более долгосрочной целью является создание запроса, который можно использовать для создания XML, который можно адаптировать для использования с веб-API.

...