Avatar billede zeus999 Nybegynder
19. juni 2004 - 13:51 Der 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.):

owner_id: atype_idx: zipcode: city:    County:
  2        1                   
  2        2        2770    Kastrup  2770
  3        1           
  3        2        2300    Sundby    2300 

Jeg skulle meget gerne bruge den korrekte SQL sætning. Tak på forhånd - Mvh. Per W
Avatar billede terry Ekspert
19. juni 2004 - 14:14 #1
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
Avatar billede zeus999 Nybegynder
19. juni 2004 - 15:20 #2
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???
Avatar billede terry Ekspert
19. juni 2004 - 15:29 #3
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
Avatar billede terry Ekspert
19. juni 2004 - 15:30 #4
This is maybe more correct.

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
Avatar billede terry Ekspert
19. juni 2004 - 16:23 #5
does this help?
Avatar billede zeus999 Nybegynder
21. juni 2004 - 09:54 #6
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.
Avatar billede terry Ekspert
21. juni 2004 - 09:59 #7
shouldnt we create a new question for this :o)

I'll take a look and get back ASAP!
Avatar billede zeus999 Nybegynder
21. juni 2004 - 10:01 #8
Sorry i do it rigth away
(-:
Avatar billede terry Ekspert
21. juni 2004 - 10:47 #9
I have an answer for you in you rsecond question justa soon as you say OK for this one :o)
Avatar billede zeus999 Nybegynder
21. juni 2004 - 11:44 #10
Der kan godt være et problem omkring "NULL" så hvis du har mulighed for at tilføje denne funktionalitet.

Tak på forhånd
Avatar billede zeus999 Nybegynder
21. juni 2004 - 11:46 #11
I have accepted your answer
Avatar billede terry Ekspert
21. juni 2004 - 11:48 #12
I think you need to select the name and then accept. It snot a very good method for accepting they have going here :o)
Avatar billede zeus999 Nybegynder
21. juni 2004 - 11:52 #13
I have just give you some good karma :-)
And try too give you the accept on your name!?!
Dont now if is woorking?
Avatar billede terry Ekspert
21. juni 2004 - 11:55 #14
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)
Avatar billede terry Ekspert
21. juni 2004 - 12:01 #15
Its also accepted now :o)
Avatar billede zeus999 Nybegynder
21. juni 2004 - 12:01 #16
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)
Avatar billede terry Ekspert
21. juni 2004 - 12:15 #17
I think we better go over to the other question so that Arne can see whats happening :o)
Avatar billede zeus999 Nybegynder
21. juni 2004 - 12:17 #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