webForumDet fria alternativet

Ta ut flera värden i en tabell mha join?

Databaser & SQL

2 svar · 246 visningar · startad av reka1

Medlem sedan sep. 2001650 inlägg
Frågan#1

Detta är pinsamt men nu har jag suttit fast i ett par 3 timmar :-(

Jag skulle behöva hämta värden från 2 tabeller.

Tabellen "kund" innehåller "foretag, postort, land, kategoriA, kategoriB, kategoriC, kategoriD, kategoriE"

Tabellen "Kategori" innehåller: "id, kategorier"

En kund kan vara involverad i upp till 5 kategorier.
Det jag vill är alltså plocka ut värdena.

sql = "SELECT kund.foretag, kund.postort, kund.land, kund.kategoriA, kund.kategoriB, 
kund.kategoriC, kund.kategoriD, kund.kategoriE, kategori.id, 

kategori.kategorier from kund INNER JOIN kategori ON kund.kategoriA = kategori.id"

Plockar ju ut värdena från kategoriA, men hur gör man för att plocka ut ända till kategoriE?

I kolumnerna kategoriiA-E ligger ett siffervärde som anger rätt kategori i tebellen "kategori" via kolumnen "id".

(Använder Access)

Medlem sedan dec. 200012 464 inlägg
#2

Du måste ha 5 förekomster av kategoritabellen i from (med olika alias).

För två kategorier

SELECT kund.foretag, kund.postort, kund.land, KategoriA.kategorier, KategoriBkategorier, 
from (kund LEFT outer JOIN kategori kategoriA ON kund.kategoriA = kategoriA.id) left outer JOIN kategori kategoriB ON kund.kategoriB = kategoriB.id

sen så är det bara att fortsätta med kategoriC och så vidare. Glöm inte parenteserna.

Kontentan av det hela är att din databasdesign är helt fel. Gör en vanlig många-många relation med tre tabeller så kan du hantera godtyckligt antal kategorier.

T.ex. om du med nuvarande design vill kunna hantera en kategori till så måste du definera om kundtabellen och ändra frågor etc.

Medlem sedan sep. 2001650 inlägg
#3

Tack för att du tog dig tid!

255 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)