---
title: "Flera tabeller - rörigt!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21771-flera-tabeller-rörigt"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "maland"
published: "2001-11-20T10:53:00.000Z"
updated: "2001-11-22T13:37:00.000Z"
replies: 12
views: 193
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/21771-flera-tabeller-rörigt"
---

# Flera tabeller - rörigt!

## #1 — maland, 2001-11-20T10:53Z

Tyckte att jag var jättesmart - tydligen inte....
Jag har sju tabeller som ska länkas samman på nåt bra vis...
En tabell med info om anställda, en med info om projekt, en med info om företag, en med info om projektledare, en med info om utvecklare, en med info om säljare samt en med info om kontaktperson...
Frågan är bara hur gör jag?? 
Varje företag kan ha flera kontaktpersoner. Varje företag kan ha flera projekt. Varje projekt kan ha flera utvecklare, projektledare samt säljare. Rörigt eller hur?? Är det någon som har gjort nåt liknande som kan komma med förslag?

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

## #2 — LarsG, 2001-11-20T11:00Z

Om du vill joina flera tabeller så är 
det enklast att skriva join-villkoret i where 

```
select *
  from t1,t2,t3,t4,t5,t6,t7
 where t1.id = t2.id
   and t2.id = t3.id
   and t3.id = t4.id
   and t4.id = t5.id
   and t5.id = t6.id
   and t6.id = t7.id
```

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

## #3 — LarsG, 2001-11-20T12:53Z

Eller så kan du skapa join-vyer och använda dom istället, så förenklar du det hela.

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

## #4 — maland, 2001-11-21T09:25Z

Men jag har problem när jag ska länka samman dem i diagrammet....I den ena tabellen har jag fyra nycklar och sedan har jag tre tabeller med två nycklar i varje. Från tabellen med två nycklar vill jag ju koppla ihop en nyckel med en nyckel i tabellen med fyra nycklar o.s.v men då får jag meddelande: The columns i table 'anteckningar' do not match an existing primary key or unique constraint

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

## #5 — LarsG, 2001-11-21T09:50Z

Oki, jag trodde något annat, uppenbarligen.

Om du vill ha en relation mellan två tabeller så måste kolumnerna i nycklarna i de båda tabellerna stämma överens till både antal och typ.

Du kan inte skapa en främmande nyckel till en del av en primärnyckel/unique

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

## #6 — maland, 2001-11-21T10:09Z

Så m jag har tabellen Anteckningar med fälten:
Ant_id (PK)
foretag
utv_id (1)
proj_led_id (2)
salj_id (3)
projektnamn
rubrik
status

Sedan har jag en tabell Utvecklare:
utv_id (1)
pers_id (\*)

En tabell saljare:
salj_id (3)
pers_id (\*)

En tabell Person
id (PK)(\*)
namn 
osv

Du ser vilka som ska höra ihop va? :-)
1:an med 1:an \* med \* osv
Förstår du? Eller svammlar jag?

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

## #7 — LarsG, 2001-11-21T10:30Z

Jag kan titta på det senare idag så jag återkommer. Måste jobba nu ;)

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

## #8 — LarsG, 2001-11-21T17:18Z

Det som jag tycker är konstigt med din modell är tabellen anteckningar som jag inte förstår vad du skall ha till.

Med den information som du har givit så skulle jag lägga upp det så här

Tre bastabeller

project,person, company

Fyra kopplingstabeller

projectmember -- vilka deltar i projekt innehåller även vilken uppgift (säljare, utvecklare etc)
                           \-- samma person kan förekomma flera gånger med olika uppgifter

employee          -- anställda

contact             -- kontaktpersoner

participant       -- företag som deltar i ett projekt

create table project(id int identity, name varchar(30), budget integer,notes varchar(300),startDate date,endDate date,primary key(id),unique(name))

create table person(id int,firstName varchar(30), lastName varchar(30), phoneNumber char(10),primary key(id))

create table company(id int,name varchar(30),adress varchar(50),primary key(id),unique (name))

create table projectMember (projectId int,personId int, task varchar(20), primary key(projectid,personid,position), foreign key(projectid) references project(id), foreign key(personId) references person(id),check(task in ('Developer', Salesperson',ProjectLeader')))

create table employee(companyid int, personid int, hireDate date,primary key(companyid,personid), 
foreign key(companyid) references company(id),foreign key(personId) references person(id))

create table contact(companyid int, personid int, primary key(companyid,personid), 
foreign key(companyid) references company(id),foreign key(personId) references person(id))

create table participant(companyid int, projectid int, primary key(companyid,project), 
foreign key(companyid) references company(id),foreign key(personId) references person(id))

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

## #9 — maland, 2001-11-21T20:35Z

Tabellen anteckningar är väl egentligen till för att kunna lägga till info om projektet, ex vis anteckningar, rubrik på anteckningar, status på projekt osv. Då tyckte jag att det även passade att slänga in id på de personer(utvecklare osv) som var knutna till projektet. Sedan har jag ju en egen tabell för det eftersom varje projekt kan ha flera utvecklare och varje utvecklare kan ha flera projekt osv...ska kolla på din modell som säkerligen är bättre! :-)

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

## #10 — maland, 2001-11-22T12:30Z

Nu har jag testat din modell som verkar KANON...tusen miljarder tack.

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

## #11 — maland, 2001-11-22T13:06Z

Funderar .....kan man inte slå ihop tabellerna person och employee?

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

## #12 — LarsG, 2001-11-22T13:34Z

Jo, under förutsättning att samma person inte kan ha flera anställningar. Det blir ju så att om man gör någon optimering så förlorar man i flexibilitet.

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

## #13 — maland, 2001-11-22T13:37Z

OK, tack så mycket för att du har tagit dig tid...Ska försöka klara mig på egen hand nu ;-)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21771-flera-tabeller-rörigt
