---
title: "Information från 2 tabeller och lite övrigt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/48779-information-från-2-tabeller-och-lite-övrigt"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "CatZ"
published: "2002-07-26T15:29:48.000Z"
updated: "2002-07-28T01:18:02.000Z"
replies: 30
views: 752
page: 1
pages: 2
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/48779-information-från-2-tabeller-och-lite-övrigt"
---

# Information från 2 tabeller och lite övrigt

_Sida 1 av 2._

## #1 — CatZ, 2002-07-26T15:29Z

Har ett antal frågor som jag skulle behöva hjälp med svaren på

**Fråga 1:**
![](http://www.katten.net/tabeller.gif) 

Så ser mina tabeller ut, hur ska jag göra för att hämta LagNamn från tabellen DistriktsLag och LagetsPoäng Från tabellen Matcher?

**Fråga 2:**
SELECT \* FROM Matcher WHERE Distrikt = Norra AND Omg = 1

Jag vet att det sättet inte funkar... finns det något sätt man kan göra ovanstående på?

**Fråga 3:**
Låt oss titta igen på översikten på tabellerna överst i denna tråden, Jag har LagID i tabellen DistriktsLag, Lagets ID hamnar sedan som HemmaLagID och BortaLagID i tabellen Matcher. Hur omvandlar jag sedan HemmaLagID till HemmaLagets fulla namn? Se fråga 1 typ :)

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

## #2 — LAMP, 2002-07-26T15:59Z

Som jag förstått det hade jag ändrat en hel del i tabellstrukturen innan jag hade fortsatt.

1) Jag hade brutit ut spelare till en egen tabell. Och pekat med relationer var de hör hemma.

2) Jag hade också brutit ut disktrikt i en egen tabell, och bara angett ett id för varje lag, dvs ett distriktid.

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

## #3 — CatZ, 2002-07-26T16:22Z

> **LAMP skrev:**
>
> 1) Jag hade brutit ut spelare till en egen tabell. Och pekat med relationer var de hör hemma.

Jag är övertygad om att du har rätt, men hur skapar jag dessa relationer som du pratar om? det är lixom det som är problemet just nu, struktureringen av tabellerna e ju inte färdig givetvis

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

## #4 — CatZ, 2002-07-26T17:08Z

Relations databaser i all sin ära... men hur skapar man relationerna enkelt i asp ?

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

## #5 — UlfT, 2002-07-26T17:23Z

> **CatZ skrev:**
>
> Relations databaser i all sin ära... men hur skapar man relationerna enkelt i asp ?

Enkelt. Du gör dem **inte** i asp. Du gör dem i databasen. Du får definiera upp så kallade "Foreign keys" i en tabell A som refererar till "primary keys" i tabellerna som tabellen A ska referera till.

I din tabell "Matcher" skulle tex "HemmaLagId" och "BortaLagId" vara foreign keys som refererar till "LagId" i tabellen "DistriktsLag".

Sedan håller jag med LAMP om att du borde se över dina tabeller.

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

## #6 — solbulle, 2002-07-26T17:37Z

..snudd på grekiska...

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

## #7 — LAMP, 2002-07-26T17:58Z

Okey, vi tar det från början. Låt oss antaga att vi har en massa distrikt i sverige som innehåller en massa fotbollslag, och dessa fotbollslag innehåller en massa spelare. För att skapa och normalisera tabeller så att vi kan hämta data enkelt, och så att vi inte lagrar samma information på olika ställen relaterar vi informationen med nycklar (relationer mellan id). Detta skulle kunna se ut så här.

\-- distrikt --

distriktId (int 5 primary key)
distriktNamn (varchar 100) 

\-- lag --

lagId (int 11 primarykey)
lagNamn (varchar 100)
distriktId (int 5)

\-- spelare --

spelarId (int 11 primary key)
spelarNamn (varchar 100)
lagId (int 11)

som ni ser så kopplar jag samman tabellerna med idnummer. Då vet jag vilka lag som hör till vilka distrikt och vilka spelare som hör till vilket lag. Dessutom lagrar jag ingen större information dubbelt. OBS jag drog bara till med fältstorleken på en höft, det kan hända att man kan minska dessa betydligt.

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

## #8 — pilos, 2002-07-26T20:17Z

"SELECT Matcher.\*,DistriktsLag.lagnamn FROM Matcher LEFT JOIN DistriktsLag ON Matcher.HemmaLagID=DistriktsLag.LagID WHERE Matcher.MatchID = 12345"

Borde fungera för att plocka fram all information om matchen med id=12345 och hemmalagets namn.

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

## #9 — LAMP, 2002-07-26T20:36Z

> **pilos skrev:**
>
> "SELECT Matcher.\*,DistriktsLag.lagnamn FROM Matcher LEFT JOIN DistriktsLag ON Matcher.HemmaLagID=DistriktsLag.LagID WHERE Matcher.MatchID = 12345"
> 
> Borde fungera för att plocka fram all information om matchen med id=12345 och hemmalagets namn.

Visst går det att få fram informationen nu också, men det är inget som man föredrar i längden. Det blir bara jobbigt, besvärligt, prestandakrävande längre fram med en bristfällig databasstruktur.

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

## #10 — CatZ, 2002-07-26T20:51Z

> **LAMP skrev:**
>
> \-- distrikt --
> 
> distriktId (int 5 primary key)
> distriktNamn (varchar 100) 
> 
> \-- lag --
> 
> lagId (int 11 primarykey)
> lagNamn (varchar 100)
> distriktId (int 5)
> 
> \-- spelare --
> 
> spelarId (int 11 primary key)
> spelarNamn (varchar 100)
> lagId (int 11)

Vad är alla dessa int 11 primary keys och varchar 100 ?
Ursäkta nybörjaraktigheten, jag förstår vad du menar men fattar inte hur jag ska göra det själv.... och visst innerjoins är smidigt. Skulle nog räcka då belastningen inte kommer vara speciellt stor på databasen. Men jag vill lära mig rätt på en gång :) det är så jobbigt att radera kunskaper och ersätta med nya.

Lamp, menar du att jag ska göra relationen i Access eller?

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

## #11 — LAMP, 2002-07-26T21:52Z

Det inom parantes är vilken datatyp fältet i tabellen är. Int (integer) är heltal och 11 är hur stort talet får vara och primary key är att fältet är satt som primärnyckel. De fält som är primärnycklar brukar oftast vara av räknartyp. 

Varchar är det samma som text i access och 100 är hur många tecken textfältet maximalt får innehålla.

Ja, du kan bygga upp tabellern i designläge i ms access. Det du bär tänka på är att inte lagra samma information på flera ställen. Tankesättet sedan är att du länkar samman tabellerna med id. 

Om du börjar med det stora, i mitt exempel distrikt. Ränkarkolumnen i tabellen distrikt fungerar som en länk till distriktId i tabellen lag. Och lagId fungerar som en länk till tabellen spelare med hjälp av fältet lagId i tabellen spelare.

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

## #12 — UlfT, 2002-07-26T21:53Z

> **CatZ skrev:**
>
> Vad är alla dessa int 11 primary keys och varchar 100 ?

Int 11 = heltal med 11 siffror.
Varchar 100 = sträng med plats för 100 tecken.
Primary key = det id som du identifierar rader med. Sätter du ett fält till "primary key", då kommer databasen garantera åt dig att du aldrig kan ha samma värde på det fältet på två olika rader, dvs du vet alltid att du har unika värden i det fältet. Därmed kan du använda det fältet för att identifiera en rad. Det är därför du i andra tabeller alltid ska välja att referera till en "primary key".

Angående datatyper i fälten så kan det variera med olika databaser. I Oracle hade Int 11 motsvarats av "Number(11,0)". Varchar hade varit samma sak. Du får kolla vad som gäller för din databashanterare.

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

## #13 — CatZ, 2002-07-27T05:42Z

Ojdå man Tackar :) Nu ska jag ta och bygga om databasen helt enkelt :) Det får bli 3 tabeller istället så som LAMP sa så fint :)

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

## #14 — CatZ, 2002-07-27T05:50Z

Hmm så jag gör det i Access:

DistriktsID - Tal(Fältstorlek=heltal(Primär Nyckel)) ?? Är det så ni menar?

Ska ställa den frågan i Access forumet istället.....

Men nu till den stora frågan, HUR gör jag en "relation" mellan lagID i Spelare tabellen till lagID i Lag tabellen?

Det är fortfarande det som är problemet....

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

## #15 — CatZ, 2002-07-27T09:07Z

hittade relationer i access... så då ska det funka, nu återstår bara hur tusan man anger att ett Heltal ska ha 5 siffror....

och sedan återstår hur tusan man ska visa sakerna ur de olika tabellerna... har aldrig gjort något sånt här innan....

Kan man använda sig av ADO eller måste man köra med SQL?

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

## #16 — LAMP, 2002-07-27T09:08Z

I ms access kan man dona med en till en relationer, en till många relationer etc. Men så bra kan inte jag ms access. Det viltiga är att de fält du skapar relationer mellan har samma fälttyp t ex int 11 och jämförbart innehåll.

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

## #17 — CatZ, 2002-07-27T09:12Z

Ja precis, men hur anger jag int 11 ? Jag menar som det är nu är det ett långt heltal bara... är det standardvärdet som ska vara 11 och inte 0 ?

Skulle ställa frågan i Access forumet men det är aldrig någon som svarar där...

Relationerna har jag redan skapat i access

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

## #18 — LAMP, 2002-07-27T09:19Z

i ms access kan du inte specificera så exakt, där har du bara kort och långt att välja mellan.

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

## #19 — CatZ, 2002-07-27T09:23Z

Ok @nders svarade faktiskt på den frågan i access forumet så jag får passa på att be om ursäkt för 

> **CatZ skrev:**
>
> Skulle ställa frågan i Access forumet men det är aldrig någon som svarar där...

 

Då till problemet med SQL satserna, ska jag använda mig av innerjoins eller hur skriver jag SQL satserna nu? Går det Använda ADO?

LAMP låt oss säga att vi använder dina tabeller, hur skulle du skriva för att visa villka spelare som är i villket lag eller villka lag som är i villken division?

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

## #20 — LAMP, 2002-07-27T09:33Z

```
SELECT distrikt.distriktId, distriktNamn, lagId, lagNamn, lag.distriktId
FROM distrikt
INNER JOIN lag
ON distrikt.distriktId = lag.distriktId
```

sedan kan du fylla på med vilkor och sortering precis som vanligt
exempel:

```
WHERE lagId = 23 AND lagNamn = 'Malmö FF'
ORDER BY distriktNamn ASC
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/48779-information-från-2-tabeller-och-lite-övrigt  
Nästa sida: https://www.webforum.nu/amne/asp/48779-information-från-2-tabeller-och-lite-övrigt/page2.md
