Avatar billede ste Nybegynder
15. januar 2006 - 19:49 Der er 16 kommentarer og
2 løsninger

Update flere felter i en tabel med flere felter fra en anden

Hej alle eksperter.

Jeg skal have updatet et felt i en tabel med resultatet i en anden tabel. Tabellerne har et felt til fælles og det bruger jeg til at binde tabellerne sammen, men men men det dur ikke. Med denne SQL, får jeg en fejl medling om at SQL ikke er korrekt afsluttet. Hvad er der galt.

UPDATE TBLAPV_HANDLING SET TBLAPV_HANDLING.AID = (SELECT TBLAPV.ID FROM TBLAPV WHERE APVGL_ID = TBLAPV_HANDLING.HAPVGL_ID)
FROM TBLAPV
WHERE TBLAPV_HANDLING.HAPVGL_ID = TBLAPV.APVGL_ID
Avatar billede arne_v Ekspert
15. januar 2006 - 19:52 #1
hvad gør den 3. linie godt for ?
Avatar billede Slettet bruger
15. januar 2006 - 19:52 #2
Du behøves ikke where clause. Hvis det skal være der skal TBLAPV_HANDLING også nævnes i from. Men efter min bedste overbevisning burde følgende fungerer

UPDATE TBLAPV_HANDLING SET TBLAPV_HANDLING.AID = (SELECT TBLAPV.ID FROM TBLAPV WHERE APVGL_ID = TBLAPV_HANDLING.HAPVGL_ID)
FROM TBLAPV
Avatar billede arne_v Ekspert
15. januar 2006 - 19:54 #3
UPDATE og FROM ????
Avatar billede Slettet bruger
15. januar 2006 - 19:54 #4
stryg lige

from TBLAPV
Avatar billede ste Nybegynder
15. januar 2006 - 19:54 #5
Til arne_v jeg ved det ikke. Har efterhånden mistet overblikket.  Til kryptos. den dur ikke.
Avatar billede arne_v Ekspert
15. januar 2006 - 19:55 #6
UPDATE TBLAPV_HANDLING SET TBLAPV_HANDLING.AID = (SELECT TBLAPV.ID FROM TBLAPV WHERE APVGL_ID = TBLAPV_HANDLING.HAPVGL_ID)

måske
Avatar billede ste Nybegynder
15. januar 2006 - 19:55 #7
Til kryptos. Så får jeg denne fejl
ORA-01427: enkelt-række underforespørgsel returnerer mere end én række
Avatar billede ste Nybegynder
15. januar 2006 - 19:57 #8
Det samme til arne_v
Avatar billede Slettet bruger
15. januar 2006 - 20:00 #9
Så giver

SELECT TBLAPV.ID FROM TBLAPV WHERE APVGL_ID = TBLAPV_HANDLING.HAPVGL_ID

mere end én række så kan man ikke bruge den.

Hvis dine data kan "bære" det kan du bruge

SELECT distinct TBLAPV.ID FROM TBLAPV WHERE APVGL_ID = TBLAPV_HANDLING.HAPVGL_ID
Avatar billede arne_v Ekspert
15. januar 2006 - 20:06 #10
UPDATE TBLAPV_HANDLING,TBLAPV SET TBLAPV_HANDLING.AID = TBLAPV.ID
WHERE TBLAPV_HANDLING.HAPVGL_ID = TBLAPV.APVGL_ID

måske

(rent gætværk)
Avatar billede ste Nybegynder
15. januar 2006 - 21:01 #11
arne_v så får jeg denne fejl.
ORA-00971: manglende SET-nøgleord
Avatar billede ste Nybegynder
15. januar 2006 - 21:10 #12
Til kryptos. Nej jeg har tjekket. apvgl_id findes kun en gang.
Avatar billede ste Nybegynder
15. januar 2006 - 21:21 #13
Til kryptos. Den kommer med følgende fejl når jeg tester dit forslag.
ORA-00971: manglende SET-nøgleord
Avatar billede ste Nybegynder
15. januar 2006 - 21:22 #14
Til kryptos. Jeg tror jeg er træt. Se bort fra den sidste meddelelse.
Avatar billede Slettet bruger
16. januar 2006 - 07:53 #15
Prøv denne her så

UPDATE TBLAPV_HANDLING SET TBLAPV_HANDLING.AID = (SELECT DISTINCT TBLAPV.ID FROM TBLAPV WHERE APVGL_ID = TBLAPV_HANDLING.HAPVGL_ID)
Avatar billede ste Nybegynder
20. januar 2006 - 14:45 #16
Hej arne_v og kryptos.
Jeg har løst problemet. Der var rod med data. Det var lykkes at skabe 2 dobbelt registreringer som gav bøvlet. Da jeg fik fjernet disse ikke valide data, kunne updaten køre. Smid et svar så deler jeg pointene, for begge jeres forslag duede.
Avatar billede Slettet bruger
20. januar 2006 - 15:06 #17
svar
Avatar billede arne_v Ekspert
20. januar 2006 - 16:28 #18
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester