webForumDet fria alternativet

Sätta vilkort på innerjoin med tre tabeller

Databaser & SQL

16 svar · 345 visningar · startad av peppar

Medlem sedan dec. 2001873 inlägg
Frågan#1

Har en SQL som ser ut sidåhär:

SELECT art_pages.*, art_typ.*, art_artiklar.* "&_
"FROM art_typ INNER JOIN (art_artiklar INNER JOIN art_pages ON art_artiklar.artId = art_pages.pagArtOrigin) ON art_typ.typId = art_artiklar.artTyp;

Men om jag vill smala av med vilkor får art_pages och art_typ t.ex såhär:

where art_pages = "nyheter"

och

where art_typ = "nyheter"

så får jag inte ihop det... hur får jag inte vilkor i denna SELECTfråga?

Medlem sedan dec. 20025 483 inlägg
#2

Vad heter kolumnerna i "art_pages" och "art_typ" som du vill skall ha värdena "nyheter"?

Medlem sedan dec. 2001873 inlägg
#3

art_pages heter fältet pagPages och art_typ = typTyp

Medlem sedan dec. 20025 483 inlägg
#4
"SELECT art_pages.*" & _
"     , art_typ.*" & _
"     , art_artiklar.*" & _
"  FROM art_typ " & _
"INNER" & _
"  JOIN (art_artiklar" & _
"         INNER" & _
"           JOIN art_pages" & _
"             ON art_artiklar.artId = art_pages.pagArtOrigin)" & _
"    ON art_typ.typId = art_artiklar.artTyp" & _
" WHERE art_pages.pagpages" & _
"     = 'nyheter'" & _
"   and art_type.typtyp" & _
"     = 'nyheter';"
Medlem sedan dec. 2001873 inlägg
#5

Jag får ett fel med denna fråga... -"Det har inte angetts något värde för en eller flera nödvändiga parametrar."
Utskriften av SQL visar detta...

SELECT art_pages.* , art_typ.* , art_artiklar.* FROM art_typ INNER JOIN 
(art_artiklar INNER JOIN art_pages 
ON art_artiklar.artId = art_pages.pagArtOrigin) ON art_typ.typId = art_artiklar.artTyp 
WHERE art_pages.pagSida = 'nyheter' and art_type.typtyp = 'nyhet';

Observera mina ändringar i fältnamnet (pagSida iställer frö pagPages) och värdet "nyhet" jämförs mot "typTyp"

Medlem sedan dec. 20025 483 inlägg
#6

Då är det med stor sannolikhet något fältnamn som är felstavat.

Medlem sedan dec. 2001873 inlägg
#7

Näppeligen, men däremot ett tabellnamn ;) Miss av mig... Tack som tusan...

Medlem sedan dec. 2001873 inlägg
#8

Men. däremot att iterera genom alla poster med dessa kriterier då? Jag har just nu två poster som matchar vilkoren ovan, men får inte till en iteration som skriver ut alla poster utan bara den senaste... Måste jag lägga till en ORDER BY får att det skall fungera? Eller kan man tjonga in en GETROWS :q

Medlem sedan dec. 20025 483 inlägg
#9

Om SQL-koden returnerar två rader bör även två rader skrivas ut vid iterering över resultatet, oavsett vilken metod du använder. Hur ser serverkoden ut?

Medlem sedan dec. 2001873 inlägg
#10

Jag var nog lite otydlig. SQLkoden returnerar bara EN post.. men i databasen finns två poster som bör passa dessa vilkor..
/red. men efter att ha tittat igenom databasen så hittade jag ett fel i en relation så det var inte så konstigt att den inte hittade fler än en post...

Medlem sedan dec. 2001873 inlägg
#11

Jag bygger vidare på dessa INNER JOINS men har stött på ett ogiltigt tecken... i frågan fast jag kan inte hitta vad tolken menar? Såhär ser frågan ut nu:

sql =	"SELECT art_pages.*, art_typ.*, art_artiklar.*, medlemsregister.* "&_
		"FROM medlemsregister INNER JOIN (art_typ INNER JOIN (art_artiklar INNER JOIN art_pages ON art_artiklar.artId = art_pages.pagArtOrigin) ON art_typ.typId = "&_ 					        "art_artiklar.artTyp) ON medlemsregister.usrId = art_artiklar.artUsrID "&_
		"WHERE ((([art_pages].[pagSid])='nyheter') AND ((art_typ.typTyp)='nyhet'));"
Medlem sedan dec. 20025 483 inlägg
#12

Testa

sql = & _
"SELECT art_pages.*"&_
"     , art_typ.*"&_
"     , art_artiklar.*"&_
"     , medlemsregister.*"&_
"  FROM medlemsregister"&_
"INNER" &_
"  JOIN (art_typ"&_ 
"INNER" &_ 
"  JOIN (art_artiklar"&_ 
"INNER" &_
"  JOIN art_pages"&_
"    ON art_artiklar.artId = art_pages.pagArtOrigin)"&_
"    ON art_typ.typId = art_artiklar.artTyp)"&_
"    ON medlemsregister.usrId = art_artiklar.artUsrID "&_
" WHERE art_pages.pagSid = 'nyheter'"&_
"   AND art_typ.typTyp = 'nyhet';"
Medlem sedan dec. 2001873 inlägg
#13

hmm? Med den får jag ett syntax fel i FROM instruktionen...

Medlem sedan dec. 20025 483 inlägg
#14

Hoppsan!

sql =  _
"SELECT art_pages.*"&_
"     , art_typ.*"&_
"     , art_artiklar.*"&_
"     , medlemsregister.*"&_
"  FROM medlemsregister "&_
"INNER" &_
"  JOIN (art_typ "&_ 
"INNER" &_ 
"  JOIN (art_artiklar "&_ 
"INNER" &_
"  JOIN art_pages"&_
"    ON art_artiklar.artId = art_pages.pagArtOrigin)"&_
"    ON art_typ.typId = art_artiklar.artTyp)"&_
"    ON medlemsregister.usrId = art_artiklar.artUsrID "&_
" WHERE art_pages.pagSid = 'nyheter'"&_
"   AND art_typ.typTyp = 'nyhet';"
Medlem sedan dec. 2001873 inlägg
#15

Jag provade ditt första och sedan provade jag...

sql =  "SELECT art_pages.*"&_
osv...

Varför fick jag fel på den? vad gör underscoren?

Medlem sedan dec. 20025 483 inlägg
#16

Den talar om att satsen fortsätter på nästa rad. Felet låg i att jag satte ett '&' efter '=', vilket betyder konkatenering.

Medlem sedan dec. 2001873 inlägg
#17

sedärja... :i

psst! det fungerar ju borde jag kanske säga... ! Tack... Men finns det någt bättre verktyg för detta än den i M$ Access?

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)