|
| 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
| |
|
|