Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Villkorlig uppdatering/insert av data

Postades av 2003-04-28 11:46:40 - Raderat konto, i forum sql-server/msde, Tråden har 9 Kommentarer och lästs av 813 personer

Jag vill föra över addressinformation från en tabell till en annan. Problemet är att ett fält i destinationstabellen inte existerar i ursprungstabellen (kontaktperson).

Det jag vill göra, i samma operation, är:

1. Föra över eventuella nya poster.
2. Uppdatera eventuella ändringar.
3. Behålla alla värden i fältet Kontaktperson.

Finns det något smidigt sätt att göra detta?


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-28 12:28:39 - Andreas Hillqvist

Är du blyg? Eller varför vågar du inte visa ditt visitkort?

Först tycker jag du uppdaterar:

UPDATE Destination SET Destination.Fält1 = Source.Fält1, Destination.Fält2 = Source.Fält2, Destination.Fält3 = Source.Fält3
Destination INNER JOIN Source ON Destination.ID = Source.ID


Sedan infogar du poster som saknas:

INSERT INTO Destination (Fält1, Fält2, Fält3)
SELECT Source.Fält1, Source.Fält2, Source.Fält3
FROM Source
WHERE NOT Source.ID IN (SELECT Destination.ID FROM Destination)

Eller om det är fler fält som skall matchas:

INSERT INTO Destination (Fält1, Fält2, Fält3)
SELECT Source.Fält1, Source.Fält2, Source.Fält3
FROM Source LEFT JOIN Destination ON Destination.FirstName = Source.FirstName AND Destination.LastName = Source.LastName
WHERE Destination.ID Is Null


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-28 12:40:23 - Raderat konto

Är på G att testa... Ditt upplägg verkar vettigt så det kommer troligtvis att fungera. (Nu kan du läsa mitt vistikort också. Inte för att det står så mycket där, men ändå...)


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-28 15:17:54 - Raderat konto

Jag verkar göra något fel vid inserten...
Källdata: _TESTcae
Källtabell: CustomerTEST
Målkdata: LIMS_DEV
Måltabell2: CUSTOMER

<code>
use LIMS_DEV
INSERT INTO LIMS_DEV.dbo.CUSTOMER([NAME], COMPANY_NAME, ADDRESS1, ADDRESS2, ADDRESS3, ADDRESS4, PHONE_NUM, FAX_NUM)
SELECT _TESTcae.dbo.CustomerTEST.CustomerNumber, _TESTcae.dbo.CustomerTEST.FullName, _TESTcae.dbo.CustomerTEST.Address, _TESTcae.dbo.CustomerTEST.ZipCode, _TESTcae.dbo.CustomerTEST.City, _TESTcae.dbo.CustomerTEST.Country, _TESTcae.dbo.CustomerTEST.Fax, _TESTcae.dbo.CustomerTEST.Phone
FROM _TESTcae.dbo.CustomerTEST
WHERE NOT _TESTcae.dbo.CustomerTEST.CustomerNumber IN (SELECT [NAME] FROM LIMS_DEV.dbo.CUSTOMER)
</code>

Följande meddelande erhålls:
Server: Msg 446, Level 16, State 9, Line 1
Cannot resolve collation conflict for equal to operation.

Vad gör jag för fel???
ÄNDRING: Jag har konstaterat att det är WHERE-satsen som felar. Utan denna går det att "INSERTA"


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-28 18:28:55 - Andreas Hillqvist

KAn det vara att CustomerNumber har annan datatyp än [NAME].


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-28 20:05:45 - Micke Hansson

Hejsan

Det är antagligen olika collation pä fälten du jämför i WHERE-satsen.. Antingen ändrar du collation på fälten så att båda har lika eller så kan du fixa det i WHERE-satsen..

WHERE NOT Username COLLATE SQL_Latin1_General_CP1_CI_AI IN (SELECT Username COLLATE SQL_Latin1_General_CP1_CI_AI FROM Users)

Det finns olika collation du kan använda.. Detta är bara ett exempel..

Micke


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-29 08:31:02 - Raderat konto

Tack Micke (och Andreas för grunden till SQL satsen)

Collation var problemet. Jag använde den collation du använde i ditt exempel. Funkade direkt.

Jag visste att collations kunde påverka olika saker, men det enda som står i fälten jag jämför är siffror i varchar-form. Men det räckte tydligen för att ställa till det.

Jag avslutar inte denna tråd riktigt än. Ska prova UPDATE också.


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-29 09:57:03 - Raderat konto

Jag får inte följande att fungera.
<code>
use LIMS_DEV
UPDATE CUSTOMER SET
CUSTOMER.COMPANY_NAME=_TESTcae.dbo.CustomerTEST.FullName,
CUSTOMER.ADDRESS1=_TESTcae.dbo.CustomerTEST.Address,
CUSTOMER.ADDRESS2=_TESTcae.dbo.CustomerTEST.ZipCode,
CUSTOMER.ADDRESS3=_TESTcae.dbo.CustomerTEST.City,
CUSTOMER.ADDRESS4=_TESTcae.dbo.CustomerTEST.Country,
CUSTOMER.PHONE_NUM=_TESTcae.dbo.CustomerTEST.Phone,
CUSTOMER.FAX_NUM=_TESTcae.dbo.CustomerTEST.Fax
[DENNA RAD FELAR] LIMS_DEV.dbo.CUSTOMER
INNER JOIN _TESTcae.dbo.CustomerTEST ON LIMS_DEV.dbo.CUSTOMER.[NAME] = _TESTcae.dbo.CustomerTEST.CustomerNumber
</code>

Felmeddelande:
Server: Msg 170, Level 15, State 1, Line 10
Line 10: Incorrect syntax near 'LIMS_DEV'.

Det borde stå någonting innan LIMS_DEV.dbo.CUSTOMER på den felaktiga raden. Eller?


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-29 10:37:23 - Micke Hansson

Hejsan

Om du vill uppdatera en tabell med data baserad på en annan så bör följande syntax fungera..

UPDATE Table1 SET Table1.Field1 = Table2.Field1,...
FROM Table2
WHERE Table1.ID = Table2.ID

Jag tror också att du får samma problem med collation i denna WHERE-sats, men nu kan du det :)

MIcke


Svara

Sv: Villkorlig uppdatering/insert av data

Postades av 2003-04-29 11:32:34 - Raderat konto

Fungerar nu. Thanx.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
263
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies