Access Lastige Query

Status
Niet open voor verdere reacties.

MeMz

Gebruiker
Lid geworden
27 sep 2007
Berichten
38
Beste Allen,

Hierbij een vraag over een query... hoop dat ik dit goed kan verwoorden

Ik heb een query gemaakt om de relaties te kunnen weergeven tussen verschillende koppelingen en certificaten....

1 koppeling kan heel veel certificaten hebben en ook een certificaat kan bij verschillende koppelingen horen...

de resultaat nu in mijn query ziet er als volgt uit

Koppeling 1 ---- certificaat R055.B10----- relatie certificaat R1144----- relatie certificaat R1320.A03

Het bovenste geeft dus het volgende weer : Koppeling 1 heeft direct te maken met 1e certificaat nummer hierboven genoemd certificaat R055.B10. En deze certificaat heeft weer relatie met andere certificaten beginnend met "relatie certificaat " zoals hierboven de certificaten R1144 en R1320.A03 . Wat ik wil is het volgende :

Koppeling 1 ---- certificaat R055.B10----- relatie certificaat R1144----- relatie certificaat R1320.A03
Koppeling 44 ---- certificaat R1144.A12----- relatie certificaat R164.B12----- relatie certificaat R1820.A03

Zoals jullie hierboven kunnen zien komt de vetgedrukte certificaat uit koppeling 1 overeen met de eerste 4 cijfers van de certificaat uit Koppeling 44. (R1144)

Ik wil dus dat de certificaten waarmee een elk andere certificaat relatie heeft wordt weergegeven. Dus ook in Koppeling 44 zou ik de certificaatnummers R055.B10 en R1320.A03 willen zien.

Het lijkt mij een hele lastige query... ik moet dus ten eerste deze direct overeenkomende certificaten achterelkaar weergeven, maar een ander punt is dat sommige certificaten alleen maar worden benoemd bij de eerste 4 cijfers net zoals R1144.

In mijn query heb ik certificaten die bij heel veel verschillende andere certificaten worden benoemd dus deze zou je dat elke keer terug moeten zien en kan aardig oplopen.

Ik weet niet of ik dit allemaal goed heb verwoord, maar als jullie mij hiermee kunnen helpen ben ik jullie zeer dankbaar.
 
Misschien is het handig als je een voorbeeldje post (liefst in Access 2003 format) want je stelt een lastige vraag. Zo op het eerste gezicht zie ik waarden die niet te koppelen zijn: R1144 is nu eenmaal niet hetzelfde als R1144.A12. Maar je kunt het kerndeel wel 'lostrekken' uit R1144.A12, en de waarde R1144 kun je wel weer matchen. Maar daarvoor is het dus wel handig om een voorbeeldje te zien met de verschillende soorten certificaten, want het is een specifieke manier van werken die ik toch even zelf wil zien.
 
OctaFish,

Bedankt weer voor je reactie. Ik heb een kleine voorbeeldje gemaakt met 1 tabel om t zo simpel mogelijk te maken maar zelfs dat kan ik niet toevoegen omdat het een te groot bestand is namelijk 107 kb en ik mag maar 100 kb. Dit is ook nog eens gezipt.

Dit vond ik heel vreemd en heb daarom toch maar een excel bestand geupload. Als je echt een access bestand wilt hebben , zou je me dan willen uitleggen hoe ik dit het beste kan uploaden ?
 

Bijlagen

  • exportquery.xls
    12 KB · Weergaven: 25
Met WinRar kun je een te groot bestand splitsen in brokken van 100kb, en die zijn wel te uploaden. Zelf maak ik nog wel eens een zipje vanuit de verkenner dit boven de 100kb is, en die , als ik hem met Winrar maak, dik onder de 100kb blijft, dus misschien hoef je 'm niet eens verder te splitsen. De db zelf zou je met <Comprimeren en Herstellen> nog kunnen inkrimpen, en dan opnieuw zippen, dat scheelt vaak ook nog een hoop. Maar ik kijk wel even naar je excel bestand, misschien is dat al genoeg.
 
Graag... als het lukt hoor ik het graag want ik kom er niet uit :)
 
Ik heb zo een-twee-drie niet een snelle oplossing, vrees ik.... Is deze query het resultaat van je noeste werk, of ziet de tabel er net zo uit? Want ik zou graag de oorspronkelijke layout van de tabel hebben, als die afwijkt.
 
het is een resultaat van een kleine voorbeeld tabel die ik had gemaakt/verzonnen. omdat in mijn tabel er gevoelige informatie staat.

ik voeg je hierbij een foto van de tabel
 

Bijlagen

  • tabel.JPG
    tabel.JPG
    80,4 KB · Weergaven: 36
Je kunt met dit soort formules de 'hoofdcode' wel 'losweken'...

Code:
Par: IIf(InStr(1;[Certificaat];".")>0;Left([Certificaat];InStr(1;[Certificaat];".")-1);[Certificaat])
Par1: IIf(InStr(1;[Relatie Certificaat 1];".")>0;Left([Relatie Certificaat 1];InStr(1;[Relatie Certificaat 1];".")-1);[Relatie Certificaat 1])

Als je die in een query gebruikt, kun je de certificaten wel weer op elkaar matchen in een nieuwe query.
 
Octafish bedankt !..... het losweken lukt me wel... heb je misschien tips over hoe je een boomstructuur query moet maken.... bijvoorbeeld koppeling 1 heeft relatie met certificaat 1 ... certificaat 1 heeft relatie met certificaat 3 en 4 ........ deze relatie 3 heeft relatie met 5 en 6 relatie vier heeft relatie met 7 en 8 enz enz eigenlijk alle relaties weergeven tot er geen relaties meer voorkomen
 
Je koppelt een tabel dan a.h.w. aanzichzelf. Door een tabel twee keer (of meer) toe te voegen aan de query, kun je het parentveld koppelen aan het child veld. Dus ParentID uit tabel1 koppel je aan (kopie)Tabel2, die je weer aan (kopie)Tabel3 koppelt etc. Ik gebruik zelf aliassen voor de tabelnamen, zodat a) de namen overzichtelijker zijn en b) de sql string veel korter kan. Tabel [Certificaat] krijgt dan het alias t1, en [Certificaat_1] noem je dan t2 etc.
 
het kan eerlijk gezegd aardig oplopen, maar heb je niet precies begrepen nadat ik ze heb gelinkt a) duurt het onwijs lang en b ) krijg ik zelfde resultaten

hierbij een foto van de query die ik wil maken , heb paar tabellen van review_relatie toegevoegd maar zoals ik zei loopt mn pc zelfs vast bij het volgend van je instructies... ik denk dat ik ergens de fout in ga... akn je me heirmee beter op weg helpen ajb
 

Bijlagen

  • reviews.JPG
    reviews.JPG
    75,8 KB · Weergaven: 34
Als je de tabellen niet koppelt aan elkaar, maar je inderdaad een query die er een soepzooi van maakt.... Ik zie ook niet hoe je in de kopietabellen naar de gekoppelde records verwijst. Als je in Veld1 het eigen certificaat hebt, en in Veld2 het 'bovenliggende' certificaat, dan kun je die twee velden aan elkaar koppelen. In jouw kopie tabellen zie ik die velden ook niet. Ik vermoed dat je die in de eerste twee tabellen wel aan elkaar kunt koppelen, al kan ik de veldnamen niet goed zien omdat de tabellen te smal zijn.

Ik heb even een voorbeeldje gemaakt van zo'n koppeling van een tabel op zichzelf. Het betreft een personentabel, waarbij in een veld een verwijzing is opgenomen naar de manager van een persoon. Die manager staat zelf ook weer in de personentabel, en heeft vermoedelijk ook weer een leidinggevende. En dat doe je dus door steeds nieuwe koppelingen te maken.
 

Bijlagen

  • Tabelkoppeling.jpg
    Tabelkoppeling.jpg
    60,2 KB · Weergaven: 15
Laatst bewerkt:
OctaFish
Octafish,

Ik had ze wel gekoppeld alleen die printscreen had ik zonder die koppeling gemaakt...

In principe heb ik 1 tabel met de beide velden... Veld Review is het hoofdcertificaat en de veld relatie heeft de certificaten die een relatie hebben met Veld 1....

Wat ik dus wil is het maken van een query waarin staat dat Veld.review een relatie heeft met de certificaten xx en waneer deze certificaten uit veld.relatie voorkomen in veld.review dan weer daarachter worden vermeld.

Het plaatje wat ik heb geupload geeft toch weer wat jij eigenlijk heb gedaan in je plaatje.

hoe zou de query eruit moeten zien in dit geval.... moet je dan steeds het veld relatie laten weergeven ?

ik wil namelijk ook dat wanneer er geen relatie is er een leeg veld komt
 

Bijlagen

  • reviews.JPG
    reviews.JPG
    63,4 KB · Weergaven: 31
Om te beginnen: de twee tabellen aan het begin en het eind zijn volgens mij verkeerd om gekoppeld. Je moet altijd van de hooflijn (Parent) naar de tweede lijn (Child) koppelen; volgens mij zijn de begin-en eind tabel aan de child kant gekoppeld. En om de lege records ook te zien (de lijn houdt tenslotte elke keer op hetzelfde niveau op) moet je een Outer join maken; niet een Inner join. Dus dubbelklikken op de verbindingslijn, en de juiste optie kiezen. Waarschijnlijk wil je van de tabel met het veld Relatie alle records zien, maar dat is een kwestie van uitproberen. Ook zou ik, als ik jou was, de tabellen een Alias naam geven die aangeeft welk niveau het is o.i.d.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan