Назад Далее

Задача 11:  Оставить в отчете только данные о клиентах, у которых есть заказы или платежи

В базе данных содержатся данные о клиентах, не имеющих заказов и платежей. На запрос отчета о клиентах возвращается список всех клиентов. При запуске отчета отображаются также строки данных о клиентах, для которых таблицы Заказы и Платежи содержат только заголовки столбцов (см. рис. 12-23).

Рис. 12-23. Отсутствие в отчете данных о заказах или платежах для отдельного клиента

Рис. 12-23  Отсутствие в отчете данных о заказах или платежах для отдельного клиента

Записи о клиентах, не имеющих заказов или платежей, можно исключить из отчета, изменив запрос отчета о клиентах.

1  
2  
3  
  WHERE
  EXISTS
  (SELECT Orders.customerNumber
  FROM Orders
  WHERE Customers.customerNumber =
  Orders.customerNumber)
  ИЛИ
  EXISTS
  (SELECT Payments.customerNumber
  FROM Payments
  WHERE Customers.customerNumber =
  Payments.customerNumber)
Блок WHERE EXISTS выполняет проверку таблиц Заказы и Платежи на предмет наличия значений customerNumber, соответствующих значениям customerNumber в таблице Клиенты. Запрос вернет только строки, для которых будут найдены совпадения по ключу customerNumber. Полный запрос должен выглядеть аналогично показанному на рис. 12-24.

Рис. 12-24. Обновленный запрос SELECT в окне Изменить набор данных

Рис. 12-24  Обновленный запрос SELECT в окне Изменить набор данных
4  
5  

(c) Copyright Actuate Corporation 2013