2009-04-20 4 views
1

J'ai trois tables,Comment puis-je interroger la plage de date à laquelle un produit n'a pas été commandé? (LINQ)

  • Produits (ProductID, ProductName)
  • Commandes (OrderID, OrderDate)
  • OrderDetails (ProductID, OrderID) table de jonction entre les produits et les commandes.

Par exemple, il y a trois ProductID dans le tableau des produits A01, A02, A03

Quatre OrderID dans le tableau des commandes 1. 01/01/2009, 2. 03/01/2009, 3 05/01/2009, 4. 07/01/2009.

données OrderDetails comme ci-dessous:

A01 - 01/01/2009

A02 - 01/01/2009

A01 - 01/03/2009

A02 - 03/01/2009

A01 - 05/01/2009

A03 - 05/01/2009

A01 - 07/01/2009

alors je veux afficher la date à laquelle A03 n'est pas commandé de la gamme 02/01/2009 jusqu'à 08/01/2009 ce qui pourrait avoir le résultat comme ça.

DateMissingOrder pour A03 produit dans la gamme de la date 02/01/2009 à 08/01/2009:

03/01/2009

07/01/2009

Comment Je fais cela dans LINQ to SQL Visual Basic? Quelqu'un peut m'aider avec quelques indices s'il vous plaît .. Merci d'avance.

Répondre

1

Essayez quelque chose comme ceci:

Sélectionner toutes les dates dans la gamme

Dim DatesInRange = (From o in dc.Orders _ 
        Where (o.OrderDate >= StartDate and _ 
          o.OrderDate <= EndDate) 
        Select o.OrderDate).Distinct 

Sélectionner toutes les dates de la gamme pour A03 commandes

Dim Dates = (From o in dc.OrdersDetails _ 
      Where (o.Order.OrderDate >= StartDate and _ 
        o.Order.OrderDate <= EndDate) and _ 
        o.Order.Product.ProductName = "A03" _ 
      Select o.Order.OrderDate).Distinct 

Retour les dates manquantes dans la deuxième liste

Dim MissingDates = DatesInRange.Except(Dates) 
+0

Merci beaucoup pour la réponse .. mais nous cherchons la date de date manquante du nom de produit A03. Dans votre cas, vous sélectionnez uniquement le produit qui n'est pas A03. – Vicheanak

+1

MERCI BEAUCOUP !!!!!!!!!!!!!!! Le problème est résolu maintenant !! Vous êtes le gars le plus SMART du monde !!!! MERCI – Vicheanak

Questions connexes