---
title: "Knepigt att få data från tre tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/156792-knepigt-att-få-data-från-tre-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "jonka589"
published: "2007-02-04T12:49:17.000Z"
updated: "2007-02-06T18:19:11.000Z"
replies: 7
views: 459
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/156792-knepigt-att-få-data-från-tre-tabeller"
---

# Knepigt att få data från tre tabeller

## #1 — jonka589, 2007-02-04T12:49Z

Hej!
Jag har ett litet snårigt problem.
Håller på med en ordlista, där vi skriver av olika källor, sparar dessa i redigerat skick och varje ord kan ha ett eller flera betydelser. 
Det finns en tabell *tbl_kallorna* som hanterar källmaterialet, en tabell *tbl_ordlistan* som hanterar de redigerade orden samt en tabell *tbl_betydelse* som anger vilka betydelser varje post i ordlistan har. 
Dessa tabeller är i sin tur sammanlänkade med två kopplingstabeller. Se bifogad PDF-fil.
Att få kallorna och ordlistan att sitta ihop går finfint:

```
SELECT
k.PK_uppslagsord_nr, k.UppslagsordK, k.Ordningstal_GOB, k.Ordningstal_OBL, k.Gutamalsformer_GOB,
k.Gutamalsformer_OBL, k.Betydelser_GOB, k.Betydelser_OBL, k.Sida_i_GOB, k.Sida_i_OBL, g.txt_genus, ok.txt_ordklass,
o.GutnisktUppslagsord
FROM
tbl_kallorna k
JOIN tbl_genus g ON k.GenusK =g.PK_genusnr
JOIN tbl_ordklass ok ON k.OrdklassK = ok.PK_ordklassnr
JOIN tbl_koppl_ordlistan_kallorna kok ON k.PK_uppslagsord_nr = kok.PK_uppslagsord_nr
JOIN tbl_ordlistan o ON o.PKordlistanr = kok.PKordlistanr
WHERE k.UppslagsordK LIKE 'un%';
```

Men när jag sedan ska koppla ihop ordlistan med betydelserna blir det fel och jag får en så kallad Cartesisk produkt, det vill säga jag får alla kombinationer som är möjliga. 
Någon som vågar sig på att hjälpa mig? Har funderat på en subquery men vet inte riktigt hur den ska se ut.  :l 
Jag använder MySQL 5.0.

Tacksam för hjälp och kommentarer   :) 

Mvh

Jonas

Bilagor:

- [Databasmodellen_20050807.pdf](https://www.webforum.nu/a/13623.pdf)

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

## #2 — LarsG, 2007-02-04T16:12Z

Kan du ge exempel på datainnehåll och förväntat resultat.

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

## #3 — jonka589, 2007-02-04T16:21Z

Hej,
Jag vill ha lite data från *tbl_kallorna*, lite från *tbl_ordlistan* samt lite från *tbl_betydelse*.
Exempelvis:
För varje betydelse som hör till ett uppslagsord som börjar på exempelvis un ('un%') vill jag visa uppslagsordet (*UppslagsordK*), uppslagsordet från ordlistan (*GutnisktUppslagsord*) .

  :)

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

## #4 — LarsG, 2007-02-04T23:30Z

Använd två frågor då, en för källorna och en för betydelserna.

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

## #5 — jonka589, 2007-02-05T06:58Z

Nej, det går tyvärr inte. Frågan ingår som en sökfunktion och det känns lite skakigt att använda att använda exempelvis ResultSet (java.sql.ResultSet) med iteratorer och .next() för att få det att synka.   :l 
Jag tror en framkomlig väg är att använda en subfråga som generar dels primärnumret för källorna, dels primärnumret för ordlistan och sedan använda dessa nummer för att få fram övrig informationen. 
Men kan man namnge de kolumner i tabellen som generas, och i så fall hur?   :q 

  :)

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

## #6 — jonka589, 2007-02-05T09:18Z

Tror att jag kanske hittade svaret på min fråga. Jag letade lite på MySQLs hemsida och hittade den hjälp jag tror jag behövde. <http://dev.mysql.com/doc/refman/5.0/en/any-in-some-subqueries.html>

```
SELECT s1 FROM t1 WHERE s1 IN    (SELECT s1 FROM t2);
```

 

Så förhoppningsvis löser det sig.

Mvh

Jonas

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

## #7 — jonka589, 2007-02-06T17:55Z

Det verkar inte riktigt fungera så som jag tänkt. När jag försökte hängde sig MySQL.
Men jag har en fråga kring JOIN. 
Om jag ställer denna fråga får jag 78 svar.

```
SELECT
k.PK_uppslagsord_nr, k.UppslagsordK, k.Ordningstal_GOB, k.Ordningstal_OBL, k.Gutamalsformer_GOB,
k.Gutamalsformer_OBL, k.Betydelser_GOB, k.Betydelser_OBL, k.Sida_i_GOB, k.Sida_i_OBL, g.txt_genus, ok.txt_ordklass,
o.GutnisktUppslagsord, o.PKordlistanr
FROM
tbl_kallorna k
JOIN tbl_genus g ON k.GenusK =g.PK_genusnr
JOIN tbl_ordklass ok ON k.OrdklassK = ok.PK_ordklassnr
JOIN tbl_koppl_ordlistan_kallorna kok ON k.PK_uppslagsord_nr = kok.PK_uppslagsord_nr
JOIN tbl_ordlistan o ON o.PKordlistanr = kok.PKordlistanr
WHERE k.UppslagsordK LIKE 'te%';
```

Men när jag ställer denna fråga får jag drygt 1100 svar när jag borde få typ 180 eller så. 

```
SELECT
k.PK_uppslagsord_nr, k.UppslagsordK, k.Ordningstal_GOB, k.Ordningstal_OBL, k.Gutamalsformer_GOB,
k.Gutamalsformer_OBL, k.Betydelser_GOB, k.Betydelser_OBL, k.Sida_i_GOB, k.Sida_i_OBL, g.txt_genus, ok.txt_ordklass,
o.GutnisktUppslagsord, o.PKordlistanr
FROM
tbl_kallorna k
JOIN tbl_genus g ON k.GenusK =g.PK_genusnr
JOIN tbl_ordklass ok ON k.OrdklassK = ok.PK_ordklassnr
JOIN tbl_koppl_ordlistan_kallorna kok ON k.PK_uppslagsord_nr = kok.PK_uppslagsord_nr
JOIN tbl_ordlistan o ON o.PKordlistanr = kok.PKordlistanr
JOIN tbl_koppl_betydelse kb ON kb.PKordlistanr = kok.PKordlistanr
WHERE k.UppslagsordK LIKE 'te%';
```

men det blir ingen skillnad när jag kör denna fråga

```
SELECT
k.PK_uppslagsord_nr, k.UppslagsordK, k.Ordningstal_GOB, k.Ordningstal_OBL, k.Gutamalsformer_GOB,
k.Gutamalsformer_OBL, k.Betydelser_GOB, k.Betydelser_OBL, k.Sida_i_GOB, k.Sida_i_OBL, g.txt_genus, ok.txt_ordklass,
o.GutnisktUppslagsord, o.PKordlistanr
FROM
tbl_kallorna k
JOIN tbl_genus g ON k.GenusK =g.PK_genusnr
JOIN tbl_ordklass ok ON k.OrdklassK = ok.PK_ordklassnr
JOIN tbl_koppl_ordlistan_kallorna kok ON k.PK_uppslagsord_nr = kok.PK_uppslagsord_nr
JOIN tbl_ordlistan o ON o.PKordlistanr = kok.PKordlistanr
JOIN tbl_koppl_betydelse kb ON kb.PKordlistanr = kok.PKordlistanr
JOIN tbl_betydelse b ON b.PK_tbl_betyd_NR = kb.PK_tbl_betyd_NR
WHERE k.UppslagsordK LIKE 'te%';
```

Spelar det någon roll i vilken ordning JOIN dsf ON sadlfkas kommer?
 :OO

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

## #8 — jonka589, 2007-02-06T18:19Z

Är plötsligt väldigt förvirrad, det kanske inte är något fel på frågan utan det kanske bara är fel på mina data i databasen. Frågorna verkar fungera och i teorin borde det fungera fint. Kan någon våga sig på en kommentar på frågorna? Verkar det logiskt?
 :OO

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/156792-knepigt-att-få-data-från-tre-tabeller
