Update query

Status
Niet open voor verdere reacties.

bargeboer

Gebruiker
Lid geworden
15 jul 2008
Berichten
16
Ik wil graag tabellen reorganiseren, omdat ik er achter kwam dat het veld Telefoonnummer van een relatie beter in een ander tabel past. Ik werk met Access 2003 NL.

Hier de tabellen:
- Relatie (primary key RelatieID:autonumber)
- AdresRelatie (primary key RelatieID, AdresID, StartDatum)
- Adressen (primary key AdresID:autonumber)

De adressen van de relaties zitten in de Adressen tabel en meerdere relaties kunnen hetzelfde adres hebben, maar op een bepaalde datum kan een relatie maar 1 adres hebben. De adressen zijn aan de relaties gekoppeld door de tabel AdresRelatie.

Nu heeft de tabel Adressen een veld Telefoonnummer. Dit veld wil ik verplaatsen naar de tabel Relaties. Ik heb nu een veld Telefoonnummer aangemaakt in de tabel Relaties en wil dit veld vullen met de actuele telefoonnummers die nu nog in de tabel Adressen staan. Hiervoor maak ik een UPDATE query die er als volgt uit ziet:

UPDATE Relaties
SET Relaties.Telefoonnummer = Adressen.Telefoonnummer
FROM Relaties INNER JOIN (Adressen INNER JOIN AdresRelatie ON Adressen.AdresId = AdresRelatie.AdresId) ON Relaties.RelatieId = AdresRelatie.RelatieId
WHERE ((AdresRelatie.StartDatum<=Now()) AND ((AdresRelatie.EindDatum>=Now()) Or (AdresRelatie.EindDatum Is Null)))

Deze query geeft de fout die (als alles goed gegaan is) als bijlage bij dit bericht te zien is. Mocht de bijlage niet zichtbaar zijn, dan komt het er op neer dat er een syntax fout is waarbij er aangegeven wordt dat er een operator ontbreekt.

Ik kom er niet uit, weet iemand wat ik fout doe?
 

Bijlagen

  • foutmelding.JPG
    foutmelding.JPG
    17,1 KB · Weergaven: 37
De fout is niet meteen duidelijk op te sporen.
Als je een voorbeeld database post dan zal e.e.a. eenvoudiger op te lossen zijn.
 
Beste Guus2005,

Hartelijk dank dat je hier even naar wilt kijken.

Ik heb een voorbeeld database gemaakt waarin de genoemde tabellen met tabelrelaties aanwezig zijn. Ik heb ook een query gemaakt waarbij de telefoonnummers van de relaties zichtbaar worden. De query zoals ik die in mijn eerste post heb genoemd kan ik echter niet in de database opslaan omdat deze een syntax error geeft.

Nu wil ik de telefoonnummers van de relaties in het veld Telefoonnummer van de Relaties tabel hebben. Uit de tabel Adressen mag het veld verdwijnen.
 

Bijlagen

Probeer deze eens:
Code:
UPDATE Relaties INNER JOIN (Adressen INNER JOIN AdresRelatie ON Adressen.AdresId = AdresRelatie.AdresId) ON Relaties.RelatieId = AdresRelatie.RelatieId SET Relaties.Telefoonnummer = [Adressen].[Telefoonnummer]
WHERE ((AdresRelatie.StartDatum<=Now()) AND ((AdresRelatie.EindDatum>=Now()) Or (AdresRelatie.EindDatum Is Null)))
 
Ok Guus,

Hij doet het, top!

Ik moest even nadenken hoe die query werkt, maar ik denk dat ik het kan verklaren doordat de query engine eerst een tijdelijke tabel maakt uit de JOIN en dat je dan aangeeft met de SET dat je op dat resultaat het Telefoonnummer (wat elders in de tijdelijke tabel staat) invult.

Bedankt voor de hulp
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan