Crystal Reports SQL Server Несколько таблиц и внешнее объединение - PullRequest
0 голосов
/ 18 августа 2010

Я пытаюсь составить отчет, в котором будут показаны товары, купленные покупателями. У меня есть таблицы Products, TransDetails, TransHeaders, Customers, и я должен выбрать все продукты, и для каждого продукта я должен показать продажи для каждого клиента. , если клиент не купил какой-либо конкретный продукт, он все равно должен отображаться в отчете с 0 продажами . Пользователь должен иметь возможность запустить этот отчет для конкретного клиента или группы клиентов. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что если я включаю таблицу клиентов в свой запрос sql, то она показывает только продукты, купленные клиентом, и не показывает продукты, которые клиент не купил.

SELECT  Products.SalesCategory, Products.ProductCode, Products.ProductTitle, Customers.CustomerCode, Transdetails.quantity
    From    Products left outer join Transdetails on Products.ProductID= Transdetails.ProductID
            Left Outer Join Customers on Customers.CustomerId= Transdetails.CustomerID
    Where SalesCategory like 'XYZ' and Products.Status like 'A' 
    and customers.customercode like 'BEST'
    order by SalesCategory, ProductCode, ProductTitle

Ответы [ 2 ]

0 голосов
/ 01 сентября 2010

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

0 голосов
/ 18 августа 2010

Это происходит потому, что ваше предложение Where включает выбор на customers.customercode like 'BEST' - это по сути превращает внешнее объединение для клиентов во внутреннее объединение.

Чтобы выбрать все продукты с SalesCategory, такие как 'XYZ' иСтатус как «А» вместе с любыми продажами клиентам с кодом клиента, как «ЛУЧШИЙ», попробуйте следующее:

SELECT  Products.SalesCategory, Products.ProductCode, Products.ProductTitle, Transcust.CustomerCode, Transcust.quantity
From    Products left outer join 
        (SELECT Customers.CustomerCode, Transdetails.ProductID, Transdetails.quantity
         FROM   Transdetails 
         Join   Customers on Customers.CustomerId= Transdetails.CustomerID
         WHERE  customers.customercode like 'BEST') Transcust
        on Products.ProductID= Transcust.ProductID
Where SalesCategory like 'XYZ' and Products.Status like 'A' 
order by SalesCategory, ProductCode, ProductTitle
...