Проблема с левым внешним соединением в кристалле - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть следующая информация, и я хочу создавать отчет о посещаемости в день. Я объясню концепцию

Таблица EMP ИМЯ
1 хасан

2 Хуссейн

3 Хамид

4 Круз

5 Филипп

Таблица транзакций

EmpID Time

1 8.08.2010 8:00

2 08.05.2010 9:00

3 8.08.2010 10:00

Мой отчет о посещаемости должен выглядеть следующим образом

Дата: 5/8/2010

ИДЕНТИФИКАТОР ИМЯ СТАТУС

1 подарок Хасана

2 Подарок Хусейну

3 подарка Хамида

4 Круз отсутствует

5 Филипп Абсент

Я попробовал следующее,

1.Создал ссылку с левым внешним соединением, EMP.ID-> transcatio.EmpID

2. Группировка по дате из таблицы переходов

  1. Создана формула для статуса, выглядит так

Если IsNull ({action.EmpID}), то «Отсутствует», иначе «Присутствует»

Но в отчете отображаются только те сотрудники, у которых есть транзакции на эту дату. Отчет выглядит так:

ИДЕНТИФИКАТОР ИМЯ СТАТУС

1 подарок Хасана

2 подарка Хусейна

3 Hammed Present Кажется, что левое внешнее соединение не сработало.

Заранее благодарим за любую помощь / совет, который вы можете дать.

Ответы [ 3 ]

0 голосов
/ 04 октября 2013

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

Вы установили соединение как обязательное? Обсуждение принудительной ссылки переполнения стека

0 голосов
/ 05 февраля 2015

Если вы хотите объединить две таблицы в кристаллическом отчете с пропущенным соединением и одновременно хотите отфильтровать отчет по правой таблице, например, ORDER.ORDER_DATE> = '1-JAN-2014', объединение будет преобразовано в уравнениеприсоединиться для решения проблемы, которую некоторые люди предлагают использовать (ISNULL (ORDER.ORDER_DATE) ИЛИ ORDER.RDER_DATE> = '1-JAN-2014')

Приведенное выше решение работает только при наличии 0 заказов для клиента иВы по-прежнему хотите показать этот список, но что, если у какого-либо клиента будет более 0 заказов, и дата заказов включена или ДО '31-ДЕКАБРЯ-2013'.В такой ситуации ISNULL (ORDER.ORDER_DATE) не будет работать.Чтобы решить эту проблему, вам нужно либо добавить объект команды или создать представление для таблицы заказов следующим образом:

  1. Создать объект команды с помощью следующего sql Выберите Customer.customer_name, Order.Order_id, order.order_dateот клиента осталось внешнее объединение заказов на customer.customer_id = order.Customer_id и order.order_date> = '1-ЯНВ-2014'

  2. Вторым решением является создание представления для заказов при созданииили замените view view_orderrs на Select * от oders, где order.order_dt> = '1-JAN-2014', а затем используйте представление в отчете вместо таблицы заказов в качестве правой таблицы.

0 голосов
/ 06 сентября 2011

Вы смотрели на фактический SQL-запрос, который был сгенерирован? Перейдите в базу данных -> Показать SQL-запрос, чтобы увидеть его. Также может быть полезно не использовать группу по дате и посмотреть, что появляется.

...