Misschien dat iemand hier ervaring mee heeft.
Ik heb twee exact dezelfde tabellen waarin verschillende kolommen zitten.
Tabel 1 bevat de gegevens die gebruikt worden, tabel 2 wordt geladen met nieuwe gegevens.
De primary key zit op drie van deze kolommen: id, localeid, naam
Omdat ik vanuit tabel 2 records wil toevoegen/updaten vanuit tabel 1 wil ik twee queries maken, een update en een insert query.
Nu had ik gedacht de insert query op de volgende manier te maken:
Deze query heeft echter niet het gewenste resultaat.
Eigenlijk zou het zoiets moeten zijn:
Maar die query werkt natuurlijk niet.
Waarschijnlijk zou dit wel met een soort join moeten kunnen werken waarvan je het resultaat om zou moeten kunnen draaien, maar daar ben ik nog niet helemaal uit.
Als iemand een hint heeft?
edit: het gaat om een query voor Oracle
Ik heb twee exact dezelfde tabellen waarin verschillende kolommen zitten.
Tabel 1 bevat de gegevens die gebruikt worden, tabel 2 wordt geladen met nieuwe gegevens.
De primary key zit op drie van deze kolommen: id, localeid, naam
Omdat ik vanuit tabel 2 records wil toevoegen/updaten vanuit tabel 1 wil ik twee queries maken, een update en een insert query.
Nu had ik gedacht de insert query op de volgende manier te maken:
SQL:
1
2
3
4
5
| INSERT INTO tabel1 SELECT * FROM tabel2 WHERE ( tabel2.veld1d not in (select tabel1.veld1 from tabel1) AND tabel2.veld2 not in (select tabel1.veld2 from tabel1) AND tabel2.veld3 not in (select tabel1.veld3 from tabel1) |
Deze query heeft echter niet het gewenste resultaat.
Eigenlijk zou het zoiets moeten zijn:
SQL:
1
2
3
| SELECT * FROM tabel2 WHERE tabel2.veld1, tabel2.veld2, tabel2.veld3 not in (select table1.veld1, tabel1.veld2, tabel1.veld3 from tabel1) |
Maar die query werkt natuurlijk niet.
Waarschijnlijk zou dit wel met een soort join moeten kunnen werken waarvan je het resultaat om zou moeten kunnen draaien, maar daar ben ik nog niet helemaal uit.
Als iemand een hint heeft?
edit: het gaat om een query voor Oracle
[ Voor 4% gewijzigd door rvrbtcpt op 21-05-2007 11:20 ]