Avatar billede sbarnney Nybegynder
31. januar 2004 - 15:53 Der er 20 kommentarer og
1 løsning

Opdater felt i tabel med felt fra anden tabel.

UPDATE t1 SET t1.kpris = (SELECT dkpris FROM t2 WHERE t1.varenr = t2.did);

Jeg får fejl i dette lille script ???

Stig
Avatar billede trer Nybegynder
31. januar 2004 - 16:04 #1
std sql92 burde hedde noget i stil med

update t1
set kpris = t2.dkpris
from t1 inner join t2
on t1.varenr = td.did
Avatar billede trer Nybegynder
31. januar 2004 - 16:05 #2
I øvrigt - hvad fejl får du?

Du vil f.eks. have et problem såfremt din subselect ovenfor returnerer mere end 1 række...
Avatar billede sbarnney Nybegynder
31. januar 2004 - 16:17 #3
Jeg får denne, med dit script. Det samme med mit.

Fejl:

SQL-forespørgsel : 

UPDATE t1 setkpris = t2.dkpris FROM t1 inner join t2 on t1.varenr = t2.did

MySQL returnerede:

You have an error in your SQL syntax near 'FROM t1 inner join t2 on t1.varenr = t2.did' at line 1
Avatar billede arne_v Ekspert
31. januar 2004 - 16:20 #4
MySQL understøtter ikke sådan en konstruktion.

Prøv med noget a la:

UPDATE t1,t2 SET t1.kpris=t2.dkpris WHERE t1.varenr=t2.did
Avatar billede sbarnney Nybegynder
31. januar 2004 - 16:26 #5
samme fejl !!
Avatar billede arne_v Ekspert
31. januar 2004 - 16:29 #6
Næppe præcis samme fejl.

Kan du copy paste fejlen ind ?
Avatar billede sbarnney Nybegynder
31. januar 2004 - 16:39 #7
Fejl

SQL-forespørgsel : 

UPDATE t1,t2 SET t1.kpris = t2.dkpris WHERE t1.varenr = t2.did

MySQL returnerede:


You have an error in your SQL syntax near 't2 SET t1.kpris=t2.dkpris WHERE t1.varenr=t2.did' at line 1
Avatar billede arne_v Ekspert
31. januar 2004 - 16:42 #8
Og det er t1.kpris og ikke t1.dkpris ?
Avatar billede sbarnney Nybegynder
31. januar 2004 - 16:45 #9
t1.kpris
t2.dkpris
Avatar billede trer Nybegynder
31. januar 2004 - 16:50 #10
Hvad version af MySQL kører du?
Avatar billede dsj Nybegynder
31. januar 2004 - 16:56 #11
I følge MySQL's dokumentation er det ikke muligt at udføre et SELECT-statement i forbindelse med UPDATE's, kun ved INSERT's.
Avatar billede arne_v Ekspert
31. januar 2004 - 16:56 #12
Godt spørgsmål.

Mit forslag krævet 4.0.4 eller nyere ifølge docs.
Avatar billede dsj Nybegynder
31. januar 2004 - 17:00 #14
Og som arne siger, kan du anvende konstruktionen UPDATE [tables] SET ... fra MySQL version 4.
Avatar billede sbarnney Nybegynder
31. januar 2004 - 17:08 #15
jeg køre 3.23.54 hos min udbyder. Det er jo noget p..
Avatar billede arne_v Ekspert
31. januar 2004 - 17:11 #16
Lav et loop i applikationen !

(PHP eller ASP formoder jeg)
Avatar billede sbarnney Nybegynder
31. januar 2004 - 17:12 #17
Jeg må finde på en anden måde at løse opdateringen på.
Avatar billede arne_v Ekspert
31. januar 2004 - 17:15 #18
en SELECT i t1, en loop i applikation og et antal UPDATE i t1.

Ikke kønt eller specielt effektivt, men det bør løse opgaven.
Avatar billede arne_v Ekspert
31. januar 2004 - 17:16 #19
en SELECT i t2, en loop i applikation og et antal UPDATE i t1.
Avatar billede sbarnney Nybegynder
31. januar 2004 - 18:21 #20
Det hele skulle køre direct i databasen.
Avatar billede arne_v Ekspert
31. januar 2004 - 18:24 #21
Det kan det ikke med den version af MySQL.
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