---
title: "Jämföra tabellinnehåll"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/61955-jämföra-tabellinnehåll"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "annesophie"
published: "2002-12-12T09:26:09.000Z"
updated: "2002-12-12T13:40:43.000Z"
replies: 12
views: 348
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/asp/61955-jämföra-tabellinnehåll"
---

# Jämföra tabellinnehåll

## #1 — annesophie, 2002-12-12T09:26Z

Hej,

Har fått TOTALT hjärnsläpp....kommer inte på lösningen till ett problem!

Jag har två tabeller *(12797016_Nov02) och (12797016_Dec02)*, datan i båda tabellerna importeras från Excelfiler och fälten i tabellerna har därför samma namn (och det skall helst förbli så).

Informationen som finns i de båda tabellerna förändras månad för månad och meningen är att dom skall jämföras. Om informationen i ett fält, tex partNumber, för Nov02 är annorlunda informationen i samma fält fast i Dec02 så skall det markeras, annars skall nyaste fältet (Dec02) skrivas ut.

Demonstration...typ... ;)

```
IF rs("PartNumber") <> rs2("PartNumber") then
	response.write "Förändring har skett"
ELSE
	'Om samma så skriv ut den nyaste informationen, alltså från tabellen 12797016_[b]Dec[/b]02
	response.write rs2("PartNumber")
END IF
```

partNumber = numeriskt fält

Men jag får inte till select satsen...och därmed inte loopen som skall lista ett hundratal artiklar!

Hur ska jag jämföra data från olika tabeller när fälten har samma namn och hur skulle en loop för detta se ut !?????! 

Ledtrådar någon!?

HELP!  :x  :(

/A

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

## #2 — Addeladde, 2002-12-12T10:06Z

Är inte säker på om denna kod fungerar men den ger dig i alla fal lite hjälp.

```
sql = & _
"select A.Partnumber, B.Partnumber  from tabell1 as A, tabell2 as B " &_
"WHERE A.Partnumber = B.Partnumber " &_
"ORDER BY A.Partnumber DESC
```

Det handlar i alla fall om att du sätter exempelvis A. framför fältnamnet för att specificera vilken tabell det gäller. Sedan är jag inte så säker på hur man gör. Har fåt hjälp med det avklippan LarsG. Sök i SQL eller ASP forumet så hittar du säkert mer hjälp

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

## #3 — OveRRidE, 2002-12-12T10:16Z

Det kanske inte går att göra så, men.. :OO

```
SELECT * FROM table1 a INNER JOIN table2 b ON a.kol1 = b.kol1 WHERE a.kol1 <> b.kol1
```

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

## #4 — LarsG, 2002-12-12T11:39Z

Vad har tabellen för nyckelfält, dvs hur avgör du om det är samma post i de båda tabellerna?

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

## #5 — annesophie, 2002-12-12T11:59Z

Tack för svaren...

LarsG\>

Hmm vet inte om jag förstår dig helt rätt...

Men informationen i tabellerna går enligt radnummer, eller ID (primary key) i detta fallet.

Nedan har vi två månader. Ideén är att man skall kunna följa uppdateringar som sker för ett antal delar i en motor.
Det kan vara så att det ändras i ett fält från en månad till en annan, men det kan också vara så att en hel rad tas bort.

Jag måste jämföra de två tabellerna radvis och därmed fältvis.
Om ett fält i 12797016_Dec02 skiljer sig från föregående månads rapport, alltså 12797016_Nov02, så skall detta markeras
tex genom att skriva ut "\<- ändring har skett" eller liknande (se \*).

Det kan ju som sagt också vara så att en hel rad är borttagen då delen är borttagen ur motorn och då skulle jag helst
vilja att det markeras att "en rad fattas" (se \*\*).

**12797016_Dec02**
primary key	partnumber	notes
1		00127992	levereras 03-02-01\* \<- ändring har skett
2		00127801	levereras 03-01-10
						\*\* \<- rad borttagen
4		00127662	del slut på lager

**12797016_Nov02**
primary key	partnumber	notes
1		00127992	del slut på lager
2		00127801	levereras 03-01-10
3		00127221	utgående
4		00127662	del slut på lager

Men som sagt, jag har ingen aning vart jag skall börja...jag får inte till någon vettig selectsats...

/A

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

## #6 — LarsG, 2002-12-12T12:17Z

Då behövs en full outer join, om det inte finns direkt stöd i DBMS så går det att skriva som

```
select t1.partnumber,t2.notes
  from [12797016_DEC02] T1 inner join 
          [12797016_NOV02] t2 
on t1.partnummer=t2.partnummer
union all
select t1.patnumber,t1.notes 
from [12797016_DEC02] T1 left outer join 
        [12797016_NOV02] t2 
on t1.partnummer=t2.partnummer
where t2.partnumber is null
union all
select t2.patnumber,t2.notes 
from  [12797016_DEC02] T1 right outer join 
         [12797016_NOV02] t2 
on t1.partnummer=t2.partnummer
where t1.partnumber is null
order by partnumber
```

Varför har du så räliga tabellnamn? Att använda \[\] är inte sql-standard men behövs i Access t.ex. Egentligen skall man använda "12797016_NOV02"

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

## #7 — annesophie, 2002-12-12T12:45Z

> Varför har du så räliga tabellnamn? Att använda \[\] är inte sql-standard men behövs i Access t.ex. Egentligen skall man använda "12797016_NOV02"

 

Ha ha ja det kan man fråga sig. Jag får väl göra om...och göra rätt! ;) 

WOW vilken....hmm "kod grej"!

Men, nu måste du förklara lite vad det är som händer i koden... Annars kommer jag bara att klippa och klistra och inte bli något klokare! 

Sedan... :r :r :r :r :r :r (\*1000)  undrar jag hur fanken jag får ut resultatet av ovan kod? Alltså, jag är ju blott en novis i ASP djungeln Lars...

Jag fick följande...

> Microsoft VBScript compilation error '800a03fd' 
> 
> Expected 'Case' 
> 
> /test/engine/index.asp, line 11 
> 
> select t1.partnumber,t2.notes
> \-------^

 

/A ;)

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

## #8 — Jesper T, 2002-12-12T12:55Z

Du måste väl sätta lite fnuttar och &\_ och så vidare, annars så förväntas en select case-sats. (så är det!)

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

## #9 — OveRRidE, 2002-12-12T12:55Z

Alltså, LarsG:s kod är en SQL-sats. ;)

Du måste således skriva den ungefär såhär:

```
SQL = "select t1.partnumber,t2.notes" & _
"from [12797016_DEC02] T1 inner join " & _
"[12797016_NOV02] t2 " & _
"on t1.partnummer=t2.partnummer " & _
"union all" & _
"select t1.patnumber,t1.notes " & _
"from [12797016_DEC02] T1 left outer join " & _
"[12797016_NOV02] t2 " & _
"on t1.partnummer=t2.partnummer " & _
"where t2.partnumber is null " & _
"union all " & _
"select t2.patnumber,t2.notes " & _
"from  [12797016_DEC02] T1 right outer join " & _
"[12797016_NOV02] t2 " & _
"on t1.partnummer=t2.partnummer " & _
"where t1.partnumber is null " & _
"order by partnumber"

set rs = conn.execute(SQL)
```

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

## #10 — annesophie, 2002-12-12T13:12Z

Hmm ok, jag får tacka så mycket för förklaringen OveRRide. Detta ser lite...mm...annorlunda ut än vad jag brukar göra. Därav min ovanligt förvirrade förvirring! :r 

Jag fick fram en början, så nu är det väl bara att fortsätta klura...

TACKAR så mycket för hjälpen allihop! LarsG  och OveRRIde \> :f .
Men jag säger som Terminator - "I'll be back!" ;)

/A

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

## #11 — OveRRidE, 2002-12-12T13:23Z

En SQL-sträng som är ovanligt lång (eller strängar överhuvudtaget) kan kortas av med & \_ för en radbrytning i koden. 

Hade du skrivit LarsG:s kod på en rad, hade den raden blivit gaanska lång. ;) Plus att jag vet att LarsG inte gillar att scrolla i sidled. :OO ;)

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

## #12 — annesophie, 2002-12-12T13:39Z

...och LarsG:s vilja är ju lag! Speciellt här i ASP forumet, eller hur!  :birp

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

## #13 — OveRRidE, 2002-12-12T13:40Z

. :OO

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/61955-jämföra-tabellinnehåll
