Champ calculé pour définir période (ou SQL???)

Résolu/Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 24 janv. 2017 à 22:06
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 25 janv. 2017 à 21:29
Bonjour,

Dans une BDD sous Access (2010), j'ai une table [T_acc] contenant un champ Date_acc.

J'ai une autre table avec des périodes. Cette table ressemble à :


J'aimerais déterminer la période de l'accouchement en fonction de Date_acc, qui doit être comprise entre DateDeb et DateFin.

Je ne sais plus s'il faut que je crée un champ calculé dans ma table [T_acc] ou bien une requête.

J'ai essayé le champ calculé, sans trouver comment...

J'ai essayé la requête, qui donne :
SELECT Count(T_Acc.N°_acc) AS CompteDeN°_acc, T_Acc.Type_acc, T_periodes.N_periode
FROM T_Acc, T_periodes
GROUP BY T_Acc.Date_acc, T_periodes.N_periode, T_Acc.Type_acc, T_periodes.DateDeb, T_periodes.DateFin, T_periodes.N_periode
HAVING (([Date_acc] Between [T_periodes]![DateDeb] And [T_periodes]![DateFin]));


La requête me renvoie un tableau vide.

J'ai pensé à une requête croisée, mais les seuls regroupements possibles sont par mois, par année, par trimestre, par date ou par date/heure.

Est-ce qu'on peut définir un regroupement différent?

Par exemple, au lieu de :
TRANSFORM Count(T_Acc.[N°_acc]) AS CompteDeN°_acc
SELECT T_Acc.[Type_acc], Count(T_Acc.[N°_acc]) AS [Total de N°_acc]
FROM T_Acc
GROUP BY T_Acc.[Type_acc]
PIVOT Format([Date_acc],"mmm") In ("janv","févr","mars","avr","mai","juin","juil","août","sept","oct","nov","déc");


J'aurais
[...] PIVOT Format([Date_acc],"...") In ("P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12");


Quelque chose du genre... ???

Merci!

2 réponses

yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
24 janv. 2017 à 22:46
bonsoir, pour commencer, je propose cette requête:
SELECT T_Acc.*, T_periodes.*
FROM T_Acc, T_periodes
WHERE T_Acc.Date_acc >= T_periodes.DateDeb 
      AND T_Acc.Date_acc <= T_periodes.DateFin ;

A compléter ou à corriger, tiens-nous au courant.
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
Modifié par ButteDuLac le 24/01/2017 à 23:02
Entre temps, voici ce que j'ai réussi...

SELECT T_Acc.Date_acc, Min(T_periodes.DateFin) AS DateFinPer
FROM T_Acc, T_periodes
WHERE (((T_periodes.DateFin)>[Date_acc]))
GROUP BY T_Acc.Date_acc;


Me renvoie la date de fin de la période au cours duquel s'est déroulé l'accouchement. Je cherche maintenant à afficher le numéro de période (N_periode ou ID_periode) correspondant, ainsi que l'année financière (Ann_financ)!
0
yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
25 janv. 2017 à 17:17
suggestion:
SELECT T_Acc.Date_acc, T_periodes.Ann_financ, T_periodes.N_periode
FROM T_Acc, T_periodes
WHERE T_Acc.Date_acc >= T_periodes.DateDeb 
      AND T_Acc.Date_acc <= T_periodes.DateFin ;
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40 > yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024
25 janv. 2017 à 21:29
Ah, quand on est un génie, ce que ça peut être simple!
Merci!!!
(J'ai encore des croûtes à manger en SQL, ma foi!)
0