webForumDet fria alternativet

Flytta viss data från en tabell till en annan

Databaser & SQL

5 svar · 282 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tja!

Jag har ett gäng befintliga tabeller.
Nu vill jag flytta viss information från ett fält (topvärden) till en kolumn i en helt annan tabell.

I min tabell tbl_service finns massa servicebesök registrerade. Det kan vara flera till samma adress, men endast det senaste ska flyttas över till den nya kolumnen i den andra tabellen.

Det ursprunliga ska finnas kvar, det skall alltså "kopieras".
Såhär har jag provat med:

UPDATE tbl_hiss SET sDate = (SELECT TOP 1 Service_Datum FROM tbl_service) WHERE Hiss_ID = tbl_service.Hiss_ID

Tabellen som data ska kopieras ifrån från heter tbl_service och fältet Service_Datum.

Fältet detta ska hamna i heter sDate (datum) och ligger i tabellen tbl_hiss.

Vore väldigt tacksam för hjälp med det här, då jag är mycket angelägen av att fixa detta!

/r Det är Access jag använder!

Medlem sedan dec. 200012 464 inlägg
#2
UPDATE tbl_hiss 
SET sDate = (
  SELECT max(Service_Datum) 
     FROM tbl_service
  WHERE tbl_hiss.Hiss_ID = tbl_service.Hiss_ID)
where hiss_id in (
   select hiss_id 
     from tbl_service)
Medlem sedan feb. 20034 441 inlägg
#3

LarsG skrev:

UPDATE tbl_hiss 
SET sDate = (
  SELECT max(Service_Datum) 
     FROM tbl_service
  WHERE tbl_hiss.Hiss_ID = tbl_service.Hiss_ID)
where hiss_id in (
   select hiss_id 
     from tbl_service)

Tack så mycket, men:

Operationen måste använda en fråga som kan uppdateras...
Medlem sedan dec. 200012 464 inlägg
#4

Ja visst ja, du använder Access som verkar ha problem med denna typ av frågor.

Jag kommer bara på sådana tråkiga lösningar som

-- byta databashanterare
-- uppdatera en post i tbl_hiss i taget.

I och för sig så förstår jag inte varför du måste lagra detta när du lika gärna kan ta fram det vid select. Du kan ju heller aldrig lita på det lagrade värdet eftersom det kan ha ha gjorts en insert sedan du uppdaterade senast.

Medlem sedan feb. 20034 441 inlägg
#5

LarsG skrev:

I och för sig så förstår jag inte varför du måste lagra detta när du lika gärna kan ta fram det vid select. Du kan ju heller aldrig lita på det lagrade värdet eftersom det kan ha ha gjorts en insert sedan du uppdaterade senast.

Nepps, kan nog inte lösa det här på någor annat sätt, eftersom jag aldrig kom fram till en fungerande lösning på det här: http://www.webforum.nu/showthread.php?s=&threadid=110363&forumid=53

Då var jag tvungen att tänka om, så då lade jag till en kolumn, där det senaste servicebesöket lagras direkt i "rätt" tabell, men samtidigt sparas i den "vanliga" tabellen.

Just den biten är lätt löst, men problemet är att det redan existerar >650 poster där "rätt" (det senaste) datumet flyttas över.

Och det är inte genomförbart om jag måste göra allt manuellt. Så antingen behöver jag ett svar på en här tråden, som funkar, eller så måste jag lösa problemet i den andra tråden, länkad ovan.

Medlem sedan feb. 20034 441 inlägg
#6

Skulle man kanske kunna göra en fuling med ett litet script, som först plockar ut Max(Service_Datum) samt ID, trycker in det i ett formulär och sedan postar formuläret till ett litet script som sedan trycker in infon på "rätt" ställe?

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)