Got it
.
Ik heb je db bekeken, en zoals ik al vermoedde, heb je (vind ik dan) een probleem met je tabel. Die is niet genormaliseerd namelijk. De tabel foto's (buiten het ID veld dat niet meetelt) 10 velden, waarvan er één uniek zou moeten zijn (Fotonummer), 8 velden attributen zijn van de foto en één veld niet thuishoort in de tabel. En dat ene veld (Artiest) zorgt nu voor je probleem. Er is overigens nóg een overbodig veld (volgens mij heb ik je daar in een andere tabel ook al op gewezen, want daar zit hetzelfde veld in) dat weg kan: het veld Jaar. Want ik mag aannemen dat je in het veld [Datum] eigenlijk de opnamedatum van de foto zou willen opslaan. En als je dat doet, dan heb je ook gelijk het jaar. Nu staat er in Datum overigens niks, en dan is het veld Jaar weer nuttig. En kan het veld Datum natuurlijk weg... Hoe dan ook: één van de twee is overbodig.
Nu moet je dus, om één artiest aan een foto te helpen,
8 overbodige velden herhalen! Als dát geen dubbel werk is...
OK, hoe zou het dan moeten? In de tabel Fotos dien je alleen gegevens op te slaan
die bij de foto horen. Zoals de opnamedatum, de fotograaf, de lokatie, het Circus en eventueel het veld Album. Dat laatste is nog een vraag; als je meerdere albumgegevens hebt, dan dient dat ook te verdwijnen. Het veld [Artiest] is dus
geen gegeven (attribuut) van de foto. Hoe weet ik dat? Simpel door het gegeven dat je één foto aan meerdere artiesten wilt hangen. Daarmee geef je dus aan dat een artiest niet uniek bij een foto hoort. Wat moet je dan wel doen? Een aparte tabel maken voor de artiesten (heb je in Personen verwerkt) en een aparte tabel voor de foto's per artiest, laten we zeggen: Foto_Artiest. Met dus een ID, een veld FotoID (Fotonummer of ID, maar Fotonummer zou uniek moeten zijn dus een sleutel) en ArtiestID. Dat laatste veld komt dan uit Personen en is nu het ID veld.
Resultaat: je tabel Fotos bevat
altijd unieke foto's die er maar één keer instaan. Tellen gaat dus gewoon met de query waarmee je de vraag begon. En geeft het juiste aantal. Volgende vraag?
.