Resultat en fonction d'une date

Resultat en fonction d'une date - SQL/NoSQL - Programmation

Marsh Posté le 02-08-2021 à 17:57:33    

Bonjour à tous,
 
je suis sur requête SQL (SqlServer 2017) ou j'ai:
 
- Une table Facture qui comporte un ID_TVA
- Une table TVA qui comporte ID_TVA | Nom  taux TVA
Exemple:

Code :
  1. ID:1 Taux Exo
  2. ID:3 Taux Normale


- Une Table TauxTVA qui comporte ID_TVA|Date de mise en application | Le Taux de TVA.

Code :
  1. ID:3 |Date: 01/01/2001|19.6
  2. ID:3 |Date: 01/01/2014|20.0


 
Je bloque pour dire au niveau de la jointure de prendre le bon taux de TVA (par rapport à la  date de la facture)
 
Pourriez-vous m'aiguiller?
Merci d'avance pour vos explications
 
razer69
 

Reply

Marsh Posté le 02-08-2021 à 17:57:33   

Reply

Marsh Posté le 02-08-2021 à 23:36:10    

Je dirais déjà comme ça que la structure de la BD est pas top :/ Pourquoi la facture n'a pas un ID de TVA qui pointe direct sur la bonne valeur du taux de TVA :??:
Pour récupérer tu prends le taux de TVA dont la date est <= à celle de la facture et qui a la date la plus élevée parmi les TVA trouvées.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-08-2021 à 09:17:25    

Bonjour Rufo,
 
La structure de la BD  c'est pas nous qui avons réalisé.
 
 

Citation :

Pour récupérer tu prends le taux de TVA dont la date est <= à celle de la facture et qui a la date la plus élevée parmi les TVA trouvées.


 
Par rapport ton conseil, il faut que je réalise cela dans la jointure ou bien dans la clause WHERE?
 

Reply

Marsh Posté le 03-08-2021 à 11:56:25    

Peu importe, le résultat sera le même que tu mettes les conditions dans la jointure ou le where. Après, en théorie, ça serait plus logique de mettre la condition sur les dates dans le where.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-08-2021 à 14:56:34    

Tu as plusieurs façon de faire ça... (mais je rejoins Rufo sur le fait que la structure est pas terrible)...
 
Un truc un peu crade mais qui marche serait de faire ça :

Code :
  1. SELECT *, (SELECT TOP 1 Taux FROM TauxTVA WHERE TauxTVA.Date_Application <= Facture.DateFac AND TauxTVA.ID_TVA = Facture.ID_TVA ORDER BY Date_Application DESC) 
  2. FROM Facture


 
A ta place, je ferai une fonction stockée pour renvoyer le taux applicable en fonction de la date de la facture et du type de taux TVA.


Message édité par antac le 08-08-2021 à 14:57:51
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed