[SQL] Join op queries in MS Access

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • huistra
  • Registratie: April 2001
  • Laatst online: 08-05-2024
Ik heb twee queries gemaakt die beiden verwijzen naar dezelfde tabel en wil in een derde query een join maken tussen deze queries.

De eerste query levert de volgende data op:

Naam2Volgnummer


De tweede query levert de volgende data op:

PB_nummerVolgnummer


In de derde query wil ik dat voor ieder volgnummer uit de tweede query de Naam2 wordt getoond uit de eerst query waarin hij gematched wordt op het volgnummer. Ik heb het volgende gebakken:

SELECT [PB nummer].Volgnummer, [PB nummer].PB_nummer, Naam_2.Naam_2
FROM Naam_2 INNER JOIN [PB nummer] ON Naam_2.Volgnummer=[PB nummer].Volgnummer;

Ik krijg als resultaat echter geen unieke waarden. Ik krijg als query resultaat een hele set aan dezelfde records. Dus de eerste x rijen bevatten allemaal volgnummer 1 met de bijbehorende naam en PBnummer.

Kan iemand helpen?

Edit: na even goed in de recordset gekeken te hebben kwam ik erachter dat ik een cartesian product creeer. Dat geeft veel te veel entries, namelijk 750.000 * 750.000. Ook het toevoegen van een WHERE clausule heeft niet geholpen. Ik heb ook geprobeerd van de PB nummer query een maketable query te maken en deze met een join te gebruiken met de Naam_2 query: zelfde resultaat, een cartesian product :'(

[ Voor 17% gewijzigd door huistra op 02-01-2006 17:47 ]


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Op verzoek en omdat het puur een SQL vraag is en de DBMgr weinig uit lijkt te maken: OFF -> PW plus een kleine titeledit zodat SQL in de tag staat ipv. MS Access :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
De query die je hier laat zien is volgens mij correct. Dan blijven er nog 2 mogelijkheden over. 1 van de queries die deze gegevens opleveren bevat een fout, of je hebt hier niet de juiste query getoond.

Kun je nog eens controleren of je de echte query die je gebruikt hier hebt gepost? Hoe zien de queries er uit?

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • huistra
  • Registratie: April 2001
  • Laatst online: 08-05-2024
P_de_B schreef op maandag 02 januari 2006 @ 23:12:
De query die je hier laat zien is volgens mij correct. Dan blijven er nog 2 mogelijkheden over. 1 van de queries die deze gegevens opleveren bevat een fout, of je hebt hier niet de juiste query getoond.

Kun je nog eens controleren of je de echte query die je gebruikt hier hebt gepost? Hoe zien de queries er uit?
Het is een enigszins ingewikkelde constructie:
De Join query roept de query [Naam_2] en de Query [PB nummer] aan. De Query [Naam_2] roept vervolgens de query [Naam_1] aan. De reden dat ik gebruik maak van meerdere queries is dat ik een bepaalde string steeds iets verder bewerk.

Hieronder de code:
Naam_1
code:
1
2
SELECT IIf(Left([Naam2/voornaam],6)="T.A.V.",[Naam1/achternaam] & " " & [Naam2/voornaam],IIf(IsNull([Naam2/voornaam])=True,[Naam1/achternaam],[Naam2/voornaam] & " " & [Naam1/achternaam])) AS Naam_1, NN2.Volgnummer
FROM NN2;


Naam_2
code:
1
2
SELECT IIf(Len([Naam 1].Naam_1)<32,[Naam 1].Naam_1 & Right("                                ",32-Len([Naam 1].Naam_1)),Left([Naam 1].Naam_1,32)) AS Naam_2, [Naam 1].Volgnummer
FROM [Naam 1], NN2;


PB nummer
code:
1
2
SELECT Left("0000000",7-Len([Bankrekening])) & [Bankrekening] & "  0000000" AS PB_nummer, NN2.Volgnummer 
FROM NN2;


De code van de eerder geposte query klopt. Afzonderlijk levert elk van de eerder genoemde queries de juiste output op.
Hope this helps... :)

Acties:
  • 0 Henk 'm!

  • huistra
  • Registratie: April 2001
  • Laatst online: 08-05-2024
*kick*

Iemand?

Acties:
  • 0 Henk 'm!

Anoniem: 143019

een distinct er tussen pleuren?

Acties:
  • 0 Henk 'm!

  • huistra
  • Registratie: April 2001
  • Laatst online: 08-05-2024
Thanx: maar kan het zijn dat een query hier heel zwaar van wordt? Mijn systeem trok het in ieder geval niet echt. :'(

Acties:
  • 0 Henk 'm!

Anoniem: 143019

huistra schreef op woensdag 04 januari 2006 @ 09:51:
[...]


Thanx: maar kan het zijn dat een query hier heel zwaar van wordt? Mijn systeem trok het in ieder geval niet echt. :'(
Kreeg je wel het goede 'antwoord'? (result)

Acties:
  • 0 Henk 'm!

  • huistra
  • Registratie: April 2001
  • Laatst online: 08-05-2024
Anoniem: 143019 schreef op woensdag 04 januari 2006 @ 09:53:
[...]


Kreeg je wel het goede 'antwoord'? (result)
Ik kreeg de query helaas niet afgerond...

Acties:
  • 0 Henk 'm!

  • huistra
  • Registratie: April 2001
  • Laatst online: 08-05-2024
P_de_B schreef op maandag 02 januari 2006 @ 23:12:
De query die je hier laat zien is volgens mij correct. Dan blijven er nog 2 mogelijkheden over. 1 van de queries die deze gegevens opleveren bevat een fout, of je hebt hier niet de juiste query getoond.

Kun je nog eens controleren of je de echte query die je gebruikt hier hebt gepost? Hoe zien de queries er uit?
Ik ben er uit! :) :*)
Het probleem zit in query 2:
code:
1
2
SELECT IIf(Len([Naam 1].Naam_1)<32,[Naam 1].Naam_1 & Right("                                ",32-Len([Naam 1].Naam_1)),Left([Naam 1].Naam_1,32)) AS Naam_2, [Naam 1].Volgnummer
FROM [Naam 1], NN2;

Hier mist natuurlijk een innerjoin, waardoor het cartesian product hier al gecreerd werd!
Allen dank voor het meedenken...
Pagina: 1