SQL / Access verschillende output view

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Stefke
  • Registratie: December 2000
  • Laatst online: 15-10 06:47
Ik heb een Access-client gekoppeld aan een SQL-database. Nu heb ik een probleem met een hele basic view/query

Vereenvoudigde probleemschets:
- een tabel relaties
- een tabel met relatie_adressen met onderscheid in type adres
code:
1
2
3
4
5
6
7
relatieID  naam
1          Jan
2          Piet

AdresID RelatieID AdresType
1       1         Factuuradres
2       1         Postadres


Nu heb ik een view in SQL-server:
code:
1
2
SELECT RelatieID, Naam, AdresType FROM relaties
LEFT OUTER JOIN relatie_adressen on relaties.relatieID = relatie_adressen.relatieID

SQL-server geeft als output:
1 Jan Factuuradres
1 Jan Postadres
2 Piet null

Als ik deze view via ODBC aan Access koppel (odbc via 32bit SQL Server native client 11 driver) dan geeft Access als output
1 Jan Factuuradres
1 Jan Factuuradres
2 Piet null

Hoe kan het dat Access iets anders weergeeft dan de view in SQL-server ophaalt??? Dit is zowel het geval op mijn laptop (met lokale SQL2008r2 server) met Access 2013 als in de testomgeving (SQL2012) met Access 2010

Als ik dezelfde query opbouw in Access op gekoppelde tabellen krijg ik - uiteraard - wel hetzelfde resultaat als de view op SQL server (namelijk het onderscheid in adrestype).

Hoe los ik dit nou op? Ik heb werkelijk geen flauw idee hoe dit komt (en dit zet het hele gebruik van SQL als backend op losse schroeven voor mij)

edit: gekoppelde tabellen gebruiken en de query runnen in Access is geen optie. Het gaat om >100.000 records, Access doet hier >10sec over. De gekoppelde view doet er <0,5sec over.
Het joinen van odbctabellen in een query in de Accessclient is een nogo in deze situatie

[ Voor 21% gewijzigd door Stefke op 20-03-2015 08:37 ]


Acties:
  • 0 Henk 'm!

  • Stefke
  • Registratie: December 2000
  • Laatst online: 15-10 06:47
Probleem opgelost....

Oorzaak:
Als je een tabel koppelt via ODBC vraagt Access naar de prompt om het wachtwoord op te slaan of je wil aangeven welk veld een UID bevat. In dit geval is dat het RelatieID (dat is de UID van een relatie), maar in deze dataset is het RelatieID niet uniek (want komt dubbel voor indien een relatie meerdere adressen heeft).
Ik heb blijkbaar wel eerder op RelatieID geklikt, niet beseffend dat dat dit effect heeft.

Als ik de view join, het wachtwoord opsla en vervolgens bij de volgende prompt annuleer (en dus geen UID aanwijs) dan geeft de query wel de juiste resultaten.