webForumDet fria alternativet

Join - Tre tabeller

Databaser & SQL

9 svar · 655 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Får inte till min query.
Jag har fyra tabeller i en Access databas enligt följande struktur:

Konton
---------------

KontoID
KontoNamn
RefTypID // referens till Typer - TypID

Typer
---------------

TypID
TypNamn

Innehall
---------------

InnehallID
RefModellID // referens till Modeller - ModellID
RefKontoID // referens till Konton - KontoID
InnehallVarde

Modeller
---------------

ModellID
ModellNamn

Jag vill hämta allt i Konton och Typer plus innehallVarde från Innehall där RefModellID har ett specifikt värde.

Medlem sedan dec. 20025 483 inlägg
#2
select k.*
     , t.*
     , i.innehallVarde
  from (konton k
inner
  join typer t
    on k.reftypid = t.typid)
inner
  join innehall i
    on k.kontoid = i.refkontoid
 where i.refmodellid = <value>
Medlem sedan juni 20006 031 inlägg
#3

Funkade fint.

Nu ska jag bara fixa en till query som ska hämta all data när jag har ett KontoID.

Alltså hämta allt i Konton,
TypNamn i Typer enligt referensen,
alla InnehallVarde i Innehall enligt referensen (Kan vara flera referenser till Konton)
alla Modellnamn i Modeller enligt referensen (Kan vara flera referenser till Innehall)

Går det att fixa i en query eller är jag tvungen att dela upp i flera?

Medlem sedan dec. 20025 483 inlägg
#4
select k.*
     , t.typnamn
     , i.innehallVarde
     , m.modellnamn
  from ((konton k
inner
  join typer t
    on k.reftypid = t.typid)
inner
  join innehall i
    on k.kontoid = i.refkontoid)
inner
  join modeller m
    on i.refmodellid = m.modellid
 where k.kontoid = <value>
Medlem sedan juni 20006 031 inlägg
#5

Tyvärr, får OleDbExeption på den queryn.
"Det har inte angetts något värde för en eller flera nödvändiga parametrar."

Medlem sedan dec. 20025 483 inlägg
#6

SQL-frågan ser korrekt ut. Testa att köra den direkt i Access. Kontrollera namnen på parametrarna i .NET-applikationen.

Medlem sedan juni 20006 031 inlägg
#7

Kör jag frågan i Access så promptar den att den vill ha m.modellnamn som inparameter :q

Medlem sedan juni 200032 967 inlägg
#8

Heter fältet verkligen så då? :)

Medlem sedan juni 20006 031 inlägg
#9

japp.
Testade att hämta med allt (*) från alla tabeller, och då verkar det funka.

Men en fundering. Funkar det verkligen sen när jag ska publicera resultatet?
Jag har ju bara ett KontoNamn som bara ska presenteras en gång och t.ex ModellNamn kan ju flera knutna till den.

Medlem sedan dec. 20025 483 inlägg
#10

Om så är fallet måste du bestämma dig för vilka kriterier som skall uppfyllas för den rad du vill visa. För samtliga träffar för ett specifikt kontonamn är väl inte (alltid) identiska?

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)