Модель отчета;проблема, касающаяся отношений «многие ко многим» - PullRequest
2 голосов
/ 15 марта 2010

У меня проблемы с настройкой модели отчета для создания отчетов с помощью построителя отчетов. Я предполагаю, что я делаю что-то не так при настройке модели отчета, но это также может быть связано с изменением основной сущности в построителе отчетов.

У меня есть 3 таблицы: клиент, адрес и продукт. У клиента есть PK ClientNumber. Адрес и Продукт оба имеют отношение FK на ClientNumber. Отношение между клиентом и адресом 1-ко-многим, а также между клиентом и продуктом: Product- (много: 1) -Client- (1: многие). -Address

Я создал модель отчета (в основном, автоматически генерируемую) с этими 3 таблицами для каждой таблицы, в которой я создал сущность. Теперь на клиентском объекте у меня есть 2 роли: адрес и продукт. Оба имеют кардинальное значение «OptionalMany», поскольку у Клиента может быть несколько адресов или продуктов. Как для адреса, так и для продукта у меня есть роль клиента с кардинальным значением «один», поскольку для каждого адреса или продукта должен существовать клиент (также пробовал OptionalOne ...).

Теперь я пытаюсь создать отчет в построителе отчетов (2.0), в котором я выбираю поля из этих трех объектов. Мне бы хотелось получить обзор клиентов с указанием их основного адреса и продуктов, но мне кажется, что я не могу создать отчет с полями из адреса и продуктов. Я начинаю с выбора атрибутов в Client, и как только я добавляю Product, например, первичная сущность меняется, как будто я выбираю продукты (вместо клиентов).

Это основной пример проблемы, с которой я сталкиваюсь в гораздо более сложной модели. Я пробовал много разных вещей в течение 2 дней, но я не могу заставить его работать. У кого-нибудь есть идеи, как с этим справиться?

(с использованием SSRS 2008)

Редактировать: в T-SQL это то, что я имею в виду:

SELECT  *
FROM    CLIENT
    INNER JOIN ADDRESS ON CLIENT.CLIENT_NUMBER = ADDRESS.CLIENT_NUMBER AND ADDRESS.TYPE = 1 --Main Address
    INNER JOIN PRODUCT ON CLIENT.CLIENT_NUMBER = PRODUCT.CLIENT_NUMBER
WHERE CLIENT.CLIENT_NUMBER = 1

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Мой опыт восходит к построителю отчетов 1.0, но MS не сильно изменилась в своей модели отчетов, так что, вероятно, она все еще применяется.

Как вы упомянули, вы можете определить многие-многие отношения в модели, но материализация этих отношений в одном табличном отчете невозможна. После того, как вы выбрали одну из сущностей на многих сторонах (Продукты), у вас не осталось способа перенести данные с другой стороны (Адреса).

Возможно, вам повезет с созданием таблицы «соединений» (ClientID-AddressID-ProductID) и ее сокрытием от ваших пользователей, например Блог Боба по службам отчетов SQL * предлагает.

В конечном счете, это большое ограничение для моделей MS, и, похоже, оно не улучшится с их последним воплощением Denali BISM многие-ко-многим

0 голосов
/ 15 августа 2014

Я понимаю, что первоначальному посту уже 4 года, и модели отчетов SSRS становятся неактуальными, но одно из решений - определить отношения OptionalMany как OptionalOne в модели, что по сути вводит модель в заблуждение, позволяя осуществлять навигацию и генерировать соответствующие запросы.

...