Toon posts:

[ORACLE/SQL] Update Multiple Row Query.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb een tabel catalognc met een kolom series en een kolom scale.
Ik heb nog tabel temp_serie_schaal met een kolom series en een kolom scale.
In de eerste tabel catalognc staan bijna 40000 records.
In de tweede tabel staan 201 records.
Elke serie komt 1 of meer keer voor in catalognc.
Elke serie komt 1 keer voor in temp_serie_schaal.

Mijn query moet de scale uit tabel temp_serie_schaal lezen en naar
tabel catalognc.scale schrijven als temp_serie_schaal.series en catalognc.series gelijk zijn. Dit moet gebeuren met elke serie .

Omdit 201 keer voorkomt is dit een multiple row update.
Het probleem is ik kan nergens vinden hoe multiple update te maken is.

Tot nu toe heb ik dit :

UPDATE catalognc
SET scale = (SELECT temp_serie_schaal.scale
FROM temp_serie_schaal,catalognc
WHERE temp_serie_schaal.series = catalognc.series);

Het probleem is dat hij nu zegt dat hij meedere records terug geeft.
De ora-01427 foutmelding.
Dit klopt ook omdat de select statement 201 resultaten terug geeft.
Ik kan deze statement wel verbeteren en krijg je dit :

UPDATE catalognc
SET scale = (SELECT temp_serie_schaal.scale
FROM temp_serie_schaal,catalognc
WHERE temp_serie_schaal.series = catalognc.series
AND temp_serie_schaal.series = 'Z901');

Het probleem hier alleen is dat ik deze statement met alle verschillende series moet uitvoeren (dus 201 keer)
Hoe is het mogelijk om dit geautomatiseerd te doen met een SQL query.

Ik gebruik SQLplus en draai op ORACLE9i2.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Maak van je 2de statement een correlated subquery:

code:
1
2
3
4
update catalognc
set scale = (select ...
from temp_serie
where temp_serie.serie = catalog.serie


Of herschrijf je eerste query als volgt (als Oracle dat ondersteunt):
code:
1
2
3
4
update catalognc
set scale = ...
from temp_serie
where temp_serie.serie = catalognc.serie

[ Voor 36% gewijzigd door whoami op 07-07-2004 14:32 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik snap niet helemaal wat je hier bedoeld.
Ik zie niet een groot verschil met mijn statement alleen
dat jij puntjes gebruikt.
Maar dit neem ik aan moet het zelfde zijn als bij mij.

Veder zijn jou statements toch niet veel anders.
Kun je ff precies formuleren wat je dedoeld.
Zodat ik snap wat je bedoeld met deze statements.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Ze zijn anders:
Jij hebt in je 2de statement een subquery waarin je 2 tabellen in je from clause hebt, ik heb 1 tabel in die from clause en join hem op de tabel in m'n update clause.

Hetzelfde geldt trouwens voor je eerste statement.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Nu is het me ook duidelijk
Ik ga nu eens verder proberen,

bedankt