Avatar billede zeus999 Nybegynder
21. juni 2004 - 10:03 Der er 27 kommentarer og
1 løsning

Oprettelse af nye poster, baseret på eksisterende poster

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 arne_v Ekspert
21. juni 2004 - 10:47 #1
Det skal vel være noget a la:

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 - 11:06 #2
Avatar billede terry Ekspert
21. juni 2004 - 11:48 #3
INSERT INTO tbladresser ([owner_id], [atype_idx],[zipcode] ,[city] ,[County])

SELECT [owner_id], 1,[zipcode] ,[city] ,[County]
FROM tbladresser WHERE tbladresser.[atype_idx] = 2 AND [owner_id] NOT IN
(SELECT T.Owner_ID FROM tbladresser T WHERE [atype_idx] = 1 )
Avatar billede terry Ekspert
21. juni 2004 - 11:48 #4
.
Avatar billede terry Ekspert
21. juni 2004 - 12:18 #5
with refrenec to http://www.eksperten.dk/spm/511502

Not as it is! The table and field names need altering.
INSERT INTO tbladresser ([owner_id], [atype_idx],[zipcode] ,[city] ,[County])
SELECT owner_id, 1,[zipcode] ,[city] ,[County] FROM tbladresser t1
WHERE NOT EXISTS (SELECT * FROM tbladresser t2 WHERE t1.owner_id=t2.owner_id AND t2.atype_idx=1)


I dont understand what the problem is with NULL values! If a field is NULL already then the field must accept NULL values! Are you saying that it doesnt?
Avatar billede terry Ekspert
21. juni 2004 - 12:19 #6
Actually the two SQL are very similar, only difference is how we find the required records.
Avatar billede zeus999 Nybegynder
21. juni 2004 - 12:20 #7
Jeg har nu inkluderet de felter som ikke kan være "NULL" så det er løst.
Men til gængeld er der et felt "address_id" som skal have det samme nr. + 1 som er i den post som skaber tvillingen
Avatar billede zeus999 Nybegynder
21. juni 2004 - 12:27 #8
Its because i havent included all the fields. But i have now :-)
Do you completly understand Danish or do you have a translater???
Terry..
Avatar billede terry Ekspert
21. juni 2004 - 12:28 #9
I dont see a field named address_id!

But you would use


SELECT ..., [address_id]+1, ......
Avatar billede terry Ekspert
21. juni 2004 - 12:30 #10
I have a transaltor :o)

No I've been in DKfor quite a few years now so I understand almost everything, I'm just Toooo lazy, and danes are good at english :o)
Avatar billede zeus999 Nybegynder
21. juni 2004 - 12:33 #11
hehe...
ok

I´ve just forgot too give all the fields on the tabel.
There are 15 fields :-)
i´m a little lazy my self
Avatar billede arne_v Ekspert
21. juni 2004 - 12:36 #12
Jeg tror at jeg er lidt handicappet - jeg har ikke været med i det foregående
spørgsmål
Avatar billede zeus999 Nybegynder
21. juni 2004 - 12:39 #13
When i try too run this, it complains about a "incorrect syntax near ')' ???

INSERT INTO crm5.address
                      (address_id, owner_id, atype_idx, zipcode, city, county, updatedCount, updated_associate_id, updated, registered_associate_id,)
SELECT    address_id + 1 AS Expr2, owner_id, 1 AS Expr1, zipcode, city, county, updatedCount, updated_associate_id, updated, registered_associate_id,
                      registered
FROM        crm5.address
WHERE    (atype_idx = 2) AND (owner_id NOT IN
                          (SELECT    T.Owner_ID
                            FROM          crm5.address T
                            WHERE      atype_idx = 1))
Avatar billede terry Ekspert
21. juni 2004 - 12:41 #14
INSERT INTO crm5.address
                      (....

should be
INSERT INTO crm5 (....
Avatar billede terry Ekspert
21. juni 2004 - 12:55 #15
you also have a , just before the closing ) to the INSERT
Avatar billede terry Ekspert
21. juni 2004 - 12:56 #16
make sure that there is the same number of fields in the SELECT as there are inthe INSERT and that they are in the correct order!
Avatar billede zeus999 Nybegynder
21. juni 2004 - 12:58 #17
Sorry ... my faul
:-)
Avatar billede zeus999 Nybegynder
21. juni 2004 - 13:04 #18
address is the tabel where the fields are in...
So why not INSERT INTO crm5.address ?
Avatar billede terry Ekspert
21. juni 2004 - 13:07 #19
oh! I thought crm5 was the table name and address the field :o)
Avatar billede zeus999 Nybegynder
21. juni 2004 - 13:23 #20
hehe ok...

Nu er der et nyt problem :-(

Cannot insert dublicate key row in object 'address' with unique index 'IDXAddrId'

Med det menes at der ikke kan være 2 poster med "address_id" men  det er det jeg prøver at undgå ved at tilføje +1
"SELECT    address_id - 1 AS Expr2,..."
Avatar billede zeus999 Nybegynder
21. juni 2004 - 13:25 #21
ehhh tilføje -1..
Avatar billede zeus999 Nybegynder
21. juni 2004 - 13:34 #22
Den er ellers sikker.
Hver gang der findes en post "address_id" = x, som ikke har en tvillinge post er tallet "address_id" = x+1 ikke brugt
Avatar billede zeus999 Nybegynder
21. juni 2004 - 13:38 #23
Hvordan tildeler man nye tal til "address_id" i forlængelse af dem der er i forvejen?
Avatar billede zeus999 Nybegynder
21. juni 2004 - 14:09 #24
Ok jeg laver et nyt spg. :-)
Avatar billede terry Ekspert
21. juni 2004 - 15:46 #25
Soryy, I've been away from my PC for a while!

The error "Cannot insert dublicate key row in object 'address' with unique index 'IDXAddrId'" indicates that you aretrying to create a record where the index 'IDXAddrId' already exists.
One or more fields in the table are used to make the index and it is these which you are trying to duplicate.
Avatar billede terry Ekspert
23. juni 2004 - 19:30 #26
status?
Avatar billede terry Ekspert
29. juni 2004 - 19:20 #27
zeus999>Are we finished with this question?
Avatar billede terry Ekspert
04. juli 2004 - 13:40 #28
and?
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