/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Opdatere flere felter fra subselect
Fra : Leif Neland


Dato : 08-05-08 10:37

MSsql

Jeg vil gerne opdatere flere felter fra et subselect.

Jeg har en kundetabel med fakturaadresse og leveringsadresse.
Jeg vil flytte leveringsadresse ned på ordrerne, så kunden kan få leveret
flere steder...

Jeg prøvede med
UPDATE ordrer
SET (o_navn, o_firma, o_adresse, o_postnr, o_bynavn, o_land,
o_telefon, o_forsendelse) =
SELECT lev_navn, lev_firma, lev_adresse,
lev_postnr, lev_bynavn, lev_land, lev_telefon, lev_forsendelse
FROM kunder
WHERE kunder.id = ordrer.kundeid

Men får fejlen:

Error in set list UPDATE clause.
Incomplete SET clause.
Unable to parse query text.

Det er kun et "one-shot job", men kan det ikke laves i et hug?

Hvis jeg skal lave det i asp, bliver det med løkker, enten at lave et query
for hvert felt:
(pseudokode)
foreach (felt in "navn","firma",...)
update ordrer set o_$felt=(select lev_$felt from kunder where
kunder.id=ordrer.kundeid)

Eller
res=query("select id,lev_navn,lev_firma,.... from kunder")
do while not res.eof
query("update ordrer set o_navn='" & res("lev_navn") & "',o_firma='" &
res("lev_firma")... where kundeid=".res("id")
rs.movenext
loop

Der må da være en bedre metode...



 
 
Kristian Damm Jensen (08-05-2008)
Kommentar
Fra : Kristian Damm Jensen


Dato : 08-05-08 13:38

Leif Neland wrote:
> MSsql
>
> Jeg vil gerne opdatere flere felter fra et subselect.
>
> Jeg har en kundetabel med fakturaadresse og leveringsadresse.
> Jeg vil flytte leveringsadresse ned på ordrerne, så kunden kan få
> leveret flere steder...
>
> Jeg prøvede med
> UPDATE ordrer
> SET (o_navn, o_firma, o_adresse, o_postnr, o_bynavn,
> o_land, o_telefon, o_forsendelse) =
> SELECT lev_navn, lev_firma, lev_adresse,
> lev_postnr, lev_bynavn, lev_land, lev_telefon, lev_forsendelse
> FROM kunder
> WHERE kunder.id = ordrer.kundeid
>
> Men får fejlen:
>
> Error in set list UPDATE clause.
> Incomplete SET clause.
> Unable to parse query text.
<snip>
> Der må da være en bedre metode...

I standard-SQL, nej.

Visse systemer tillader at man kan skrive ting som fx

UPDATE ordrer
FROM kunder, ordrer
SET o_navn = k.lev_navn
, o_firma = k.lev_firma
, o_adresse = k.lev_adresse
, o_postnr = k.lev_postnr
, o_bynavn = k.lev_bynavn
,o_land = k.lev_land
, o_telefon = k.lev_telefon
, o_forsendelse = k.lev_forsendelse
WHERE kunder.id = ordrer.kundeid

Du kan muligvis finde noget tilsvarende for MSSQL.

--
Venlig hilsen /Best regards
Kristian Damm Jensen



Leif Neland (09-05-2008)
Kommentar
Fra : Leif Neland


Dato : 09-05-08 09:07


"Kristian Damm Jensen" <dNOamSPm.uAMsenet@kristiandamm.dk> skrev i en
meddelelse news:4822f47e$0$15886$edfadb0f@dtext01.news.tele.dk...
> Leif Neland wrote:
> > MSsql
> >
> > Jeg vil gerne opdatere flere felter fra et subselect.
> >
> > Jeg har en kundetabel med fakturaadresse og leveringsadresse.
> > Jeg vil flytte leveringsadresse ned på ordrerne, så kunden kan få
> > leveret flere steder...
> >
> > Jeg prøvede med
> > UPDATE ordrer
> > SET (o_navn, o_firma, o_adresse, o_postnr, o_bynavn,
> > o_land, o_telefon, o_forsendelse) =
> > SELECT lev_navn, lev_firma, lev_adresse,
> > lev_postnr, lev_bynavn, lev_land, lev_telefon, lev_forsendelse
> > FROM kunder
> > WHERE kunder.id = ordrer.kundeid
> >
> > Men får fejlen:
> >
> > Error in set list UPDATE clause.
> > Incomplete SET clause.
> > Unable to parse query text.
> <snip>
> > Der må da være en bedre metode...
>
> I standard-SQL, nej.
>
> Visse systemer tillader at man kan skrive ting som fx
>
> UPDATE ordrer
> FROM kunder, ordrer
> SET o_navn = k.lev_navn
> , o_firma = k.lev_firma
> , o_adresse = k.lev_adresse
> , o_postnr = k.lev_postnr
> , o_bynavn = k.lev_bynavn
> ,o_land = k.lev_land
> , o_telefon = k.lev_telefon
> , o_forsendelse = k.lev_forsendelse
> WHERE kunder.id = ordrer.kundeid
>
> Du kan muligvis finde noget tilsvarende for MSSQL.
>
Tak, det virkede.

Leif



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste