19. juni 2004 - 13:51Der er
17 kommentarer og 1 løsning
Update post med innerjoin og select
En tabel med adresser. Der er to poster med samme "owner_id" men forskellig type "atype_idx". Tilsammen udgør "owner_id" og "atype_idx" primærnøgle for den enkelte post. Jeg skal UPDATE feltet "zipcode" i den ene post(atype_idx=1)med værdien fra den anden post(atype_idx=2)hvor de deler "owner_id". Der findes ca. 1400 gange 2 poster der skal rettes. Tabelegenskaber(eks.):
UPDATE tbladresser SET zipcode = (SELECT T2.zipcode from tbladresser T2 WHERE T2.Owner_id = tbladresser.owner_id AND T2.atype_idx = 2) WHERE atype_idx = 1
Jeg takker mange gange for hjælpen. Den brokker sig dog over at man ikke kan sætte "NULL" ind på feltet "zipcode". Grunden til det er at der kan være en post med "atype_idx=1" og ikke den anden post med "atype_idx=2" således at den prøver at sætte en "NULL" ind i posten med "atype_idx=1" istedet???
UPDATE tbladresser SET zipcode = IsNuLL((SELECT T2.zipcode from tbladresser T2 WHERE T2.Owner_id = tbladresser.owner_id AND T2.atype_idx = 2),Null) WHERE atype_idx = 1
UPDATE tbladresser SET zipcode = IsNuLL((SELECT T2.zipcode from tbladresser T2 WHERE T2.Owner_id = tbladresser.owner_id AND T2.atype_idx = 2),tbladresser.ZipCode) WHERE atype_idx = 1
Thx Terry Jeg takker endnu engang. Det virker.... Mit nye problem er nu at der i samme tabel findes en post med "owner_id" = x og "atype_idx" = 2 men der mangler en post magen til med samme "owner_id" = x og alle de andre udfyldte felter fra posten men "atype_idx" = 1. Så jeg skal have oprettet en ekstra post med alle de dataer fra "owner_id" = x, "atype_idx" = 2 til de poster som kun har en post med "owner_id" = x og "atype_idx" = 2.
thanks zeus999, I need it :o) Hope you didnt mind me waiting for accept on this question before going on to the next! (too many people are mis-using the system)
Jeg har lige fået en løsning fra en anden men der først og fremmest et problem omkring "NULL". Den kan ikke sætte "NULL" ind i denne tabel så dèr skal den "bare" udelade dataen. Også har jeg svært ved at se hvor den vælger den enkelte post, som har "atype_idx" = 2 og ikke har en tvillinge post med "atype_idx" = 1. Vil denne sætning ikke kun oprette en post???
INSERT INTO tabel (owner_id,atype_idx,f1,f2,f3) SELECT owner_id,1,f1,f2,f3 FROM tabel t1 WHERE NOT EXISTS (SELECT * FROM tabel t2 WHERE t1.owner_id=t2.owner_id AND t2.atype_idx=1)
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.