webForumDet fria alternativet

Join - Tre tabeller

9 svar · 655 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#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.

Peter SMedlem 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>
PeddaMedlem sedan juni 20006 032 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?

Peter SMedlem 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>
PeddaMedlem sedan juni 20006 032 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."

Peter SMedlem 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.

PeddaMedlem sedan juni 20006 032 inlägg
#7

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

@ndersMedlem sedan juni 200032 969 inlägg
#8

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

PeddaMedlem sedan juni 20006 032 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.

Peter SMedlem 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?

125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)