2010-08-18 6 views
0

J'essaie de faire un rapport qui montrera les produits achetés par les clients. J'ai Products, TransDetails, TransHeaders, Customers tables et je dois choisir tous les produits et pour chaque produit je dois montrer des ventes pour chaque client. Si le client n'a pas acheté de produit particulier, il doit encore être visible sur le rapport avec 0 ventes. l'utilisateur doit pouvoir exécuter ce rapport pour un client ou un groupe de clients particulier. Le problème que je suis confronté en ce moment est, si j'inclus la table des clients dans ma requête sql alors il montre seulement les produits achetés par le client et il ne montre pas les produits que le client n'a pas acheté.Crystal Reports SQL Server Tables multiples et jointure externe

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 

Répondre

0

Cela semble être parce que votre Where clause comprend la sélection sur customers.customercode like 'BEST' - cela se essentiellement la jointure externe aux clients dans une jointure interne.

Pour sélectionner tous les produits avec SalesCategory comme « XYZ » et le statut comme « A », ainsi que les ventes aux clients avec customercode comme « le meilleur », procédez comme suit:

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 
+0

@shahsali: une approche similaire devrait être possible pour un plus grand nombre de tables - pourquoi ne pas modifier votre question d'inclure la requête complète, de préférence y compris les paramètres? Aussi, pouvez-vous inclure la version de Crystal que vous utilisez? –

+0

merci marque j'ai trouvé la solution en supprimant le lien entre le produit et la table de transaction. Bien que le rapport prenne plus de temps que la normale .. merci pour votre aide. – user423487

0

en supprimant le lien entre le produit et la table des détails de la transaction J'ai résolu ce problème, donc je sélectionne tous les produits et sélectionne toutes les transactions du client.