Selectie van tarieven binnen meer-op-meer relatie

Status
Niet open voor verdere reacties.

BartSt

Gebruiker
Lid geworden
26 jun 2012
Berichten
86
Knipsel.JPG

Zie bijgevoegde afbeelding voor structuur (relevante) tabellen.

Ik slaag er niet in om een SELECT query te maken die alle records in Lidmaatschappen_Personen oplijst, en aan elk van die records de tarieven (België en buitenland) koppelt die op de begindatum van het lidmaatschap van toepassing waren.

Met "van toepassing" bedoel ik een vergelijking van deze aard:
[Lidmaatschappen_Personen].[Begindatum]>=[LIJST_LidmsTarieven_Per].[Begindatum] AND
[Lidmaatschappen_Personen].[Begindatum]<=[LIJST_LidmsTarieven_Per].[Einddatum] AND
[Lidmaatschappen_Personen].[ID_LidsoortPer]=[LIJST_LidmsTarieven_Per].[ID_LidsoortPer]
Dit zou maar één mogelijk waarde per tarief mogen opleveren.

Hoe kan ik dit het best doen?
 
Laatst bewerkt:
Ik mis een tabel in je query; ik neem tenminste aan dat je ook een tabel hebt met de tarieven erbij. En die is essentieel als je de geldende tarieven wilt zien.
 
De tarieven staan in LIJST_LidmsTarieven_Per. (Rechtertabel)

Ik heb het inmiddels kunnen oplossen. Excuses voor het onnodig openen van een topic, maar bedankt voor de hulp. Voor wie benieuwd is:

Ik heb een query "Lidms_LidsoortenMetTarieven_Per" gemaakt die de tarieven (LIJST_LidmsTarieven_Per) en lidsoorten (LIJST_Lidsoorten_Per) combineert. Inner join, dus meerdere tarieven per lidsoort. (Deze stap is strikt genomen niet noodzakelijk, maar maakt het makkelijker werken.)
De query LidsoortenMetTarieven wordt in een query X verbonden met de lidmaatschappen (Lidmaatschappen_Personen), zoals je kan zien in de volgende afbeelding:

Knipsel.JPG

De tabel LidmsTarieven werd zo ingevuld dat er voor elke lidsoort minstens één tariefregel bestaat en dat per lidsoort de begin- en einddatums van elk record op elkaar aansluiten en niet overlappen. De uiterste begindatum per lidsoort is bovendien 1/1/1900 en de einddatum 9/9/9999. (Bv. voor één lidsoort 1/1/1900 tem 31/12/2013 ; 1/1/2014 tem 31/3/2014 ; 1/4/2014 tem 9/9/9999)

Dat betekent dat een vergelijking van de begindatum van een lidmaatschap met deze datums exact één record uit LIJST_LidmsTarieven_Per oplevert.
Ik heb daarom aan query X deze vergelijking toegevoegd als criterium bij Lidmaatschappen_Personen.Begindatum:
>=[Lidms_LidsoortenMetTarieven_Per]![Begindatum] And <=[Lidms_LidsoortenMetTarieven_Per]![Einddatum]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan