Waarden uit een tabel meerdere keren laten weergeven in een berekend veld met een que

Status
Niet open voor verdere reacties.

mijemo

Gebruiker
Lid geworden
25 aug 2014
Berichten
15
Goedemiddag:

Ik heb 2 tabellen:
- Hoofdvestiging met adresgegevens
- Filialen van een hoofdvestiging met hun eigen adresgegevens

Ik wil met een query een overzicht maken met het volgende resultaat:

Veld Veld Veld
Hoofdvestiging Filiaal Adres
Amber Hoorn
Oranje Utrecht
Oranje A Maarn
Oranje B Delft
Oranje C Uden

Als er een Hoofdvestiging is zonder filiaal; wordt het adres van de hoofdvestiging weergegeven
Als er een hoofdvestiging is met 1 of meer filialen, dan moet de hoofdvestiging met adres worden weergegeven, net als de daaraan verbonden filialen met hun adres.

In mijn eigen resultaat zie ik altijd de Hoofdvestiging, maar als er filialen zijn, nooit de Hoofdvestiging terug, maar alleen de filialen.

Suggesties?

Vrgr
Michel
 
Om te beginnen: waarom 2 tabellen? Een veel betere werkwijze is om gegevens die van dezelfde entiteit zijn (=identieke obejcten) bij elkaar te houden in één tabel. Een filiaal is hetzelfde (een gebouw op een locatie) als een hoofdvestiging (een gebouw op een locatie) dus er is geen enkele reden om filialen apart op te slaan. Wél wil je natuurlijk bijhouden of een gebouw een filiaal is of een hoofdvestiging, en dat is heel simpel bij te houden door een extra veld toe te voegen met daarin de ID waarde van de hoofdvestiging. Bijkomend voordeel: als een filiaal op zijn beurt weer onderfilialen heeft, heb jij een extra tabel nodig, en ik niet; ik vul dan gewoon de adres gegevens in van het onderfiliaal, en verwijs naar het filiaal. Op die manier kun je eindeloos doorbreien.
En je probleem wordt ook gelijk een stuk simpeler.
 
oplossing duidelijk

Beste Octafish,

Bedankt voor je antwoord en excuus voor mijn wat rommelige vraagstelling. Een bestandje toevoegen is toch wel duidelijker.

Inhoudelijk:
Ik heb er inderdaad 2 tabellen van gemaakt, omdat ik niet wist hoe ik anders in 1 tabel de link moet leggen tussen hoofdvestiging en filiaal.
Daarnaast heeft de tabel met hoofdvestigingen al erg veel velden, maar het is inderdaad de beste oplossing.

Grzz
Michel
 
Hoe krijg ik nu toch het overzicht?

Beste Octafish,

Helaas is het mij nog niet duidelijk.

Een veld toevoegen met Hoofdvestiging id is geen probleem, maar hoe krijg ik nu een overzicht met Hoofdvestiging gesoorteerd met al hun filialen.
Zodat ik in 1 opslag zie welke filialen bij welke hoofdvestiging hoort.

Vrgr
Michel
 
Zolang je minder dan 255 velden hebt (en als je daar in de buurt zit, moet je denk ik toch gaan splitsen) is het niet zo moeilijk. Zodra een filiaal wordt ingevuld, moet je die koppelen aan een hoofdvestiging. Dat kun je simpel doen door een keuzelijst te maken van het veld ParentID (laat ik het koppelveld eens een logische naam geven). Deze keuzelijst baseer je dan (logisch) aan dezelfde tabel, alleen moet je dan de hoofdvestigingen filteren. Da's niet zo moeilijk: een hoofdvestiging is namelijk niet aan een andere vestiging gekoppeld, en heeft dus niets in het veld ParentID. De query kun je dus filteren op Is Null voor het veld ParentID. Nu is het simpel: vul je een bedrijf in, en vul je niks in bij ParentID dan is het automatisch een hoofdvestiging. Kies je een bedrijf uit de lijst met hoofdvestigingen, dan heb je automatisch de koppeling gelegd.

Nu je laatste vraag: om een lijst te maken van hoofdvestiging met subvestiging heb je toch 2 tabellen nodig. Maar je hebt er maar één... De oplossing is simpel: voeg in je query de tabel 2 keer toe, en gebruik aliassen om ze uit elkaar te houden. De ene tabel noem je dan Hoofd, en de 2e Filiaal (of zo). 2 identieke tabellen dus, die je dan wel aan elkaar moet koppelen. En dat is simpel: omdat het veld ParentID verwijst naar het veld BedrijfID (ik weet niet hoe je het sleutelveld hebt genoemd) koppel je dat aan elkaar: je sleept dus BedrijfID naar VestigingID, en maakt daar een Outer Join van waarbij je van Hoofd alles wilt zien, en van Filiaal de gekoppelde. Nu kun je velden gebruiken uit om het even welke tabel, want de velden zijn uiteraard identiek.
Op dezelfde manier kun je dus ook subfilialen van filialen toevoegen, want die hebben weer een koppeling met een BedrijfID van een filiaal. Dan gebruik je dus, als je zo'n constructie wilt, 3 kopieën van de tabel.
 
Ik krijg het toch niet voor elkaar, wellicht zie ik iets over het hoofd?

Beste Michel,

Ik heb inmiddels de tabel aangepast en nu wil ik dus een overzicht maken waar de hoofdvestigingen en filialen in komen te staan.
Dit is de tabel

Bedrijf_Id Bedrijfsnaam Hoofd_Id
1 Perry
3 Perry Frank 1
4 Perry Tjech 1
5 Decathlon
6 Decathlon Ned 5
7 Bever
8 Decathlon Port 5
9 Decathlon Ital 5
10 ActionSport
11 Perry Duits 1
12 Decathlon Bel 5
13 Zwerfsport
14 De Waard
15 De Waard Ams 14
16 Decathlon Rus 5
17 Perry Den 1
18 De Waard Rott 14

Nu wil een middels een query een overzicht maken dat er zo uitziet:
Bedrijfsnaam Filiaal Adres
ActionSport Andstr
Bever B str
De Waard C Str
De Waard Ams D Str
De Waard Rott E str
Decathlon F str
Decathlon Bel G Stra
Decathlon Ital H Str
Decathlon Ned D
Decathlon Port F str
Decathlon Rus K Str
Perry P Str
Perry Den PO str
Perry Duits PD Str
Perry Frank P Str
Perry Tjech P Str
Zwerfsport Z str

Dus ook de vestigingen met filialen moeten een eigen regel krijgen, omdat daaraan andere gegevens verbonden zijn

Is dit mogelijk? Of ga ik nu gelijk naar de zeer complexe programmeer fase?

Vrgr
Michel
 
Da's geen probleem, maar ik zie een extra kolom met oplopende letters. Waar komt die vandaan?
 
extra kolom, sorry, die hoorde er niet bij

Sorry Michel,

Deze kolom hoorde er niet bij.

Het gaat er om dat ik zowel de hoofdvestiging als de filialen gesorteerd bij elkaar krijg.

In de eerste kolom komt de naam van de hoofdvestiging te staan, in de 2e kolom de filialen.
In een 3e en volgende kolom kan bijv het adres komen te staan.
In ieder geval moet ook de hoofdvestiging een eigen regel hebben( maar daar is dan de 2e kolom leeg), want het adres van de hoofdvestiging kan afwijken van het filiaaladres

Gr
Michel
 
Ik heb een query gemaakt op basis van je gegevenstabelletje (volgende keer graag ofwel een Excel bestand, ofwel een database, want ik ben geen tikpoes ;)) en die geïmporteerd in Access onder de tabelnaam [Vestigingen]. En daar deze query van gemaakt:
Code:
SELECT Vestiging.Bedrijf_Id AS FiliaalID, Vestiging.Bedrijfsnaam, Filiaal.Bedrijf_Id AS VestigingID, IIf([Filiaal].[Bedrijfsnaam] Is Null,"Hoofdvestiging",[Filiaal].[Bedrijfsnaam]) AS Filiaal, 
Vestiging.Locatie AS [Locatie Filiaal]
FROM Vestigingen AS Filiaal RIGHT JOIN Vestigingen AS Vestiging ON Filiaal.Bedrijf_Id = Vestiging.Hoofd_Id
ORDER BY Vestiging.Bedrijfsnaam, Filiaal.Bedrijf_Id;
 
Bedankt!!

Super!
Het werkt! Ik begin nu ook wat van de sql code te begrijpen. :)
Heb hier nog maar zeer weinig ervaring mee.

Zal de volgende keer excel bestandje(s) bijvoegen.

Hartelijk dank voor de moeite!

Grzz
 
Toch nog niet helemaal wat ik wil

Beste Michel,

Het resultaat is nog niet helaaml wat ik wil..

Ik wil nl een lijst met de hoofdvestigingen in de eerste kolom en de filialen in de 2e kolom, waarbij de cel in de 2e kolom leeg is als er geen filialen zijn.
Maar dus ook als een hoofdvestiging een filiaal heeft, de hoofdvestiging wel in de lijst van hoofdvestigingen staat, maar dan met een lege cel in de 2e kolom.
Ter verduidelijking nu wel een excel spreadsheet toegevoegd
Bekijk bijlage Vestigingen.xlsx.

grzz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan