Récupération données avec Linq
Salut à toutes et à tous,
Pour un développement qui m'a été demandé, je dois récupérer des données, mais je coince.
(Bien entendu) je ne peux pas modifier la structure de la base de données (mal montée malheureusement).
Soit un Dataset récupérant les données de la base de données et contenant, entre autre, 4 tables :
Depenses |
Contrats |
ContratsVsFactures |
Factures |
NumContrat --<-- |
NumContrat --<-- |
NumContrat |
|
|
|
NoFacture -->-- |
NoFacture |
DateDepense |
|
|
DateFacture |
Dépense 1 |
|
|
|
Dépense 2 |
|
|
|
Mon problème est qu'on me demande les dépenses par facture.
Donc si on a 3 factures pour un contrat, par exemple,
pour la 1ère facture il me faudra la somme des dépenses 1 et 2 de ce contrat depuis le début jusqu'à la DateFacture de la 1ère facture
pour la 2ème facture il me faudra la somme des dépenses 1 et 2 de ce contrat entre la date de la 1ère facture et la date de la 2ème facture
pour la 3ème facture il me faudra la somme des dépenses 1 et 2 de ce contrat entre la date de la 2ère facture et la date de la 3ème facture
Ça fait un bon moment que je cherche sans trouver la solution, c'est pourquoi je fais appel aux gourous du forum.
Il me semble qu'il me faut commencer par extraire tous les contrats de la facture,
Ensuite il me faut trouver toutes les factures concernant chaque contrat de la facture (pour en extraire les dates entre lesquelles je dois chercher),
Ensuite je trie cette liste de contrats/factures par date de facturation,
Ensuite, pour chaque contrat, il me faut récupérer la date de la facture que je cherche (sera la date de fin) et la date de la ligne précédente (sera la date du début de la somme des dépenses),
Enfin, pour chaque contrat, il me faut faire la somme des dépenses 1 et dépense 2 de la table Dépense pour lesquels le contrat = contrat de la liste précédente et entre les dates de début et de fin.
Selon vous, est-ce que ma logique de travail est bonne ?
Si oui, je n'ai pas réussi à monter la requête pour extraire cela.
Comment devrais-je faire ?
Merci de vos z'avis z'avisés