Archief - Probleem met SQL query in Access

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bauhaus

Legacy Member
Voor een maat ben ik bezig een programma te maken met een database.
Ik heb van hem een Excell rooster gekregen dat als basis dient voor deze database. In het rooster hebben we WinkelID's als kolomkoppen, Datums als rijkoppen en in elke cel de NaamID's van de personen die dan in een specifieke winkel op een bepaalde datum werken.
Het lukt me echter niet om een SQL query te maken die de gegevens afbeeldt zoals op het rooster.

Ik dacht eerst om te werken met een crosstab query waarbij je dan rijkoppen & kolomkoppen hebt, maar de data in de cellen moet echter het resultaat zijn van een statische functie.

Ik heb dan een self-join geprobeerd, waarbij er dan voor elke WinkelID een nieuwe kolom wordt aangemaakt:

SELECT a1.Datum, a1.NaamID, a2.NaamID
FROM WinkelsPersoon AS a1, WinkelsPersoon AS a2
WHERE a1.Datum=a2.Datum and a1.WinkelID=1 and a2.WinkelID=2;

Maar dan krijg ik dit:

Datum a1.NaamID a2.NaamID
2009-02-02 3 6
2009-02-02 39 6
2009-02-02 7 6
2009-02-02 2 6

2009-02-02 3 7
2009-02-02 39 7
2009-02-02 7 7
2009-02-02 2 7

Voor elke NaamID in de 2de kolom worden alle NaamID's uit de eerste kolom herhaalt...
Terwijl het zo zou moeten zijn:

Datum a1.NaamID a2.NaamID
2009-02-02 3 6
2009-02-02 39 7
2009-02-02 7 Null
2009-02-02 2 Null

Iemand hier die een oplossing weet ?

Bauhaus

Legacy Member
Nog wat info ter verduidelijking:

Het rooster dat als basis dient voor de database: Rooster
Zoals je ziet zijn de winkels hier de kolomkoppen en de datums de rijkoppen.

Mijn database: Rooster

De uitvoer van de query zou er bv. zo uitzien:

Code:
 WinkelID1 WinkelID2 WinkelID3 ...
Datum1   NaamID  NaamID   NaamID
Datum1   NaamID  NaamID    Null
Datum1   NaamID     Null        Null
Datum2   NaamID  NaamID   NaamID
Datum2   NaamID     Null       NaamID
Datum3   NaamID  NaamID   NaamID
Datum3   NaamID  NaamID   NaamID
...            ...            ...            ...
(Ik heb voor mijn query momenteel enkel de tabel WinkelsPersoon gebruikt, kwestie van simpel te beginnen. Eens de query werkt kan ik ze uitbreiden door de NaamID's dan te laten verwijzen naar hun respectievelijke namen in de andere tabellen.)

Zoals je ziet zullen er ook gaten (Null) zitten in de query, het aantal personen verschilt immers per winkel én datum.
Wellicht zal ik hier gebruik moeten maken van een LEFT JOIN en RIGHT JOIN, maar heb dus geen flauw idee hoe.

Ice

Legacy Member
Er is een reden waarom ze programmeertalen / reporting tools hebben uitgevonden...

Moto

Legacy Member
k dacht eerst om te werken met een crosstab query
denk dat het daarmee lukt ze, moest ge den excel + db kunnen oploaden (test-data ofzo) zou ik der wel eens naar kijken

Er is een reden waarom ze programmeertalen / reporting tools hebben uitgevonden...
Pfff echte programmeurs doen dat in Sql :p

Moto

Legacy Member
Heb der vandaag naar gekeken maar deze is toch beter met wat programmeer-werk op te lossen, die namen zo krijgen is toch iets te klote om in sql te doen
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan