---
title: "Hjälp med fråga i Access"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/179691-hjälp-med-fråga-i-access"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "AndreasC"
published: "2009-08-08T01:21:28.000Z"
updated: "2009-08-08T23:52:48.000Z"
replies: 10
views: 636
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/179691-hjälp-med-fråga-i-access"
---

# Hjälp med fråga i Access

## #1 — AndreasC, 2009-08-08T01:21Z

Jag har två tabeller i Access som är identiska till formatet. Alla fält är lika.

Fälten är:

Artikelnr,   Artikelnamn,     P,     Antal_i_lager,    Ordernr,     TaBort,     Utfyllnad

Jag vill med en uppdateringsfråga kunna uppdatera alla poster i ena tabellen med innehållet i fältet Antal_i_lager i den andra tabellen där P är lika. Där P är lika i båda tabellerna ska alltså ändast fältet Antal_i_lager uppdateras, de andra fälten ska lämnas orörda.

Antal_i_lager ska uppdateras så att det antal som ligger i källtabellen ska adderas till antalet som redan står i måltabellen, ifall det står något där. Anta att det minsta värdet för antal som kan finnas i måltabellen är 0. Anta att det aldrig kan vara blankt. Om det står 10 för antal i måltabellen och 5 i källtabellen så ska resultatet bli 15 i måltabellen efter att frågan har körts.

Har försökt att fixa detta men frågan uppdaterar tyvärr inte enbart Antal_i_lager utan även innehållet i de andra fälten och förstör därmed datan vilket givetvis inte är så bra.

Permalänk: https://www.webforum.nu/p/179691

## #2 — nitro2k01, 2009-08-08T03:11Z

Vet inte hur väl det funkar med just Access, men pröva:

```
UPDATE tbl_produkter t1
SET    t1.Antal_i_lager = t1.Antal_i_lager  + s1.Antal_i_lager 
FROM
(
  SELECT s2.P as P, s2.Antal_i_lager as Antal_i_lager
  FROM   tbl_produkter t2, tbl_inkommande s2
  WHERE  t2.P = s2.P and s2.Antal_i_lager > 0
) s1
WHERE  t1.P = s1.P
```

Permalänk: https://www.webforum.nu/p/2198111

## #3 — AndreasC, 2009-08-08T12:13Z

Jag antar att tabellerna i exemplet heter tbl_produkter och tbl_inkommande, men vad betyder t1, t2 respektive s1?

Permalänk: https://www.webforum.nu/p/2198119

## #4 — MickeA.com, 2009-08-08T12:17Z

> **[AndreasC skrev:](https://www.webforum.nu/p/1476205)**
>
> Jag antar att tabellerna i exemplet heter tbl_produkter och tbl_inkommande, men vad betyder t1, t2 respektive s1?

Det är alias för tabellerna, om du kollar så står det *tbl_produkter **t1*** och så kan man referera till samma tabell med **t1** istället för **tbl_produkter**

Permalänk: https://www.webforum.nu/p/2198120

## #5 — AndreasC, 2009-08-08T12:45Z

Ok, då blev det klarare. Tack :)

Ska kolla din kod ikväll nitro2k01. Återkommer med reslutat.

Permalänk: https://www.webforum.nu/p/2198122

## #6 — AndreasC, 2009-08-08T14:15Z

Koden ser nu ut såhär:

```
UPDATE tblProdukter t1
SET t1.Antal_i_lager = t1.Antal_i_lager + s1.Antal_i_lager 
FROM
(
  SELECT s2.P as P, s2.Antal_i_lager as Antal_i_lager
  FROM   tblProdukter t2, tblTemp_Produkter s2
  WHERE  t2.P = s2.P and s2.Antal_i_lager > 0
) s1
WHERE  t1.P = s1.P;
```

Jag lade till ; efter koden för att avsluta den.

Jag får syntaxfel och information om att en operator saknas. Vad är fel?

Permalänk: https://www.webforum.nu/p/2198123

## #7 — nitro2k01, 2009-08-08T19:57Z

Står det vilken rad felet uppstår på eller dylikt?

Permalänk: https://www.webforum.nu/p/2198138

## #8 — MickeA.com, 2009-08-08T20:02Z

> **[AndreasC skrev:](https://www.webforum.nu/p/1476210)**
>
> Jag får syntaxfel och information om att en operator saknas. Vad är fel?

Kan du skriva ut hela SQL frågan, felkoder och kanske något mer av din kod, verkar konstigt att den gnäller på ovanstående.

Permalänk: https://www.webforum.nu/p/2198139

## #9 — nitro2k01, 2009-08-08T20:20Z

Pröva också att köra delfrågan för att se om du får fel då.

```
  SELECT s2.P as P, s2.Antal_i_lager as Antal_i_lager
  FROM   tblProdukter t2, tblTemp_Produkter s2
  WHERE  t2.P = s2.P and s2.Antal_i_lager > 0
```

Permalänk: https://www.webforum.nu/p/2198140

## #10 — AndreasC, 2009-08-08T20:30Z

Delfrågan gick att köra utan syntaxfel. Har inte kontrollerat resultatet men den gick iallafall att köra.

Hela koden ser ut såhär:

UPDATE tblProdukter t1
SET t1.Antal_i_lager = t1.Antal_i_lager + s1.Antal_i_lager 
FROM
(
  SELECT s2.P as P, s2.Antal_i_lager as Antal_i_lager
  FROM   tblProdukter t2, tblTemp_Produkter s2
  WHERE  t2.P = s2.P and s2.Antal_i_lager \> 0
) s1
WHERE  t1.P = s1.P;

Försöker jag köra ovanstående får jag:

Syntaxfel (operator saknas) i frågeuttrycket 't1.Antal_i_lager + s1.Antal_i_lager
FROM
(
  SELECT s2.P as P, s2.Antal_i_lager as Antal_i_lager
  FROM   tblProdukter t2, tblTemp_Produkter s2
  WHERE  t2.P = s2.P and s2.Antal_i_lager \> 0
) s1'.

Permalänk: https://www.webforum.nu/p/2198142

## #11 — AndreasC, 2009-08-08T23:52Z

Har modifierat koden nu. Är inte så bra på SQL men detta känns som det kan ge samma resultat:

UPDATE tblProdukter
SET tblProdukter.Antal_i_lager = tblProdukter.Antal_i_lager + tblTemp_Produkter.Antal_i_lager 
FROM tblTemp_Produkter
WHERE tblProdukter.P = tblTemp_Produkter.P and tblTemp_Produkter.Antal_i_lager \> 0;

Vad tror ni? Tänkte testa koden nu i natt.

EDIT: Jag har löst problemet. Det slutliga SQL-uttrycket blev som följande:

UPDATE tblProdukter, tblTemp_Produkter
SET tblProdukter.Antal_i_lager = \[tblProdukter\].\[Antal_i_lager\]+\[tblTemp_Produkter\].\[Antal_i_lager\]
WHERE (((tblProdukter.Artikelnamn)=\[tblTemp_Produkter\].\[Artikelnamn\]) AND ((tblProdukter.P)=\[tblTemp_Produkter\].\[P\]) AND ((tblTemp_Produkter.Antal_i_lager)\>0));

Jag lade även till ett extra where-villkor. Uppdateringen sker om artikelnnamn och P är desamma i båda tabellerna samt att Antal_i_lager överstiger 0 i källtabellen.

Permalänk: https://www.webforum.nu/p/2198161

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/179691-hjälp-med-fråga-i-access
