hur får jag denna sats att inkludera en tredje tabell som heter wfsubkategori, ska ha med kategoriID i tabellen sukategori i denna sats
Set RS=objConn.Execute("SELECT * FROM wfInlagg INNER JOIN wfKategori ON wfInlagg.inlaggKategori = wfKategori.kategoriID where inlaggKategori="& varKat)
Peter SMedlem sedan dec. 20025 483 inlägg SELECT
*
FROM
wfInlagg INNER JOIN wfKategori
ON
wfInlagg.inlaggKategori = wfKategori.kategoriID
INNER JOIN wfsubkategori
ON
wfsubkategori.kategoriid = wfKategoriID
where
inlaggKategori=" & varKat
Peter S skrev:
SELECT
*
FROM
wfInlagg INNER JOIN wfKategori
ON
wfInlagg.inlaggKategori = wfKategori.kategoriID
INNER JOIN wfsubkategori
ON
wfsubkategori.kategoriid = wfKategoriID
where
inlaggKategori=" & varKat
Expected ')'
/Forum/listaInlagg.asp, line 11
"wfInlagg.inlaggKategori = wfKategori.kategoriID INNER JOIN wfsubkategori ON &"_
Set RS=objConn.Execute("SELECT * FROM wfInlagg INNER JOIN wfKategori ON &"_
"wfInlagg.inlaggKategori = wfKategori.kategoriID INNER JOIN wfsubkategori ON &"_
"wfsubkategori.kategoriid = wfKategoriID where &"_
"inlaggKategori=" & varSub)
Peter SMedlem sedan dec. 20025 483 inlägg På tre ställen har du &-tecknet på fel sida av "-tecknet.
wfInlagg = kategori
wfKategori= kategoriID
wfSubkategori=kategoriID finns även subkategoriID här
[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]Unknown column 'wfKategoriID' in 'on clause'
/Forum/listaInlagg.asp, line 10
[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]Unknown column 'wfKategoriID' in 'on clause'
/Forum/listaInlagg.asp, line 10
Set RS=objConn.Execute("SELECT * FROM wfInlagg wfi INNER JOIN wfKategori wfk ON "&_
"wfi.kategori = wfk.kategoriID INNER JOIN wfsubkategori ON "&_
"wfsubkategori.kategoriid = wfKategoriID where "&_
"wfk.kategori=" & varSub)
Peter SMedlem sedan dec. 20025 483 inlägg Felet beror som meddelandet antyder på att wfKategoriID inte finns i någon tabell. Vilken kolumn skall wfsubkategori.kategoriid matchas mot?
Set RS=objConn.Execute("SELECT * FROM wfInlagg wfi INNER JOIN wfKategori wfk ON "&_
"wfi.kategori = wfk.kategoriID INNER JOIN wfsubkategori ON "&_
"wfsubkategori.kategoriid = wfk.kategoriID where "&_
"wfk.kategori=" & varSub)
Skriver om koden och nu har jag först detta problemet
Detta är huvudkategorierna wfCat
+----+-------------------+
| id | kategori |
+----+-------------------+
| 1 | Bilar& Motorer |
| 2 | Sex & Samlevnad |
| 3 | Datorer & N􏻤tverk|
+----+-------------------+
Detta är underkategorierna wfSubCat
+----+---------+--------+---------------+
| id | mainCat | subCat | underkategori |
+----+---------+--------+---------------+
| 1 | 1 | 1 | Saab |
| 2 | 1 | 2 | Volvo |
| 3 | 1 | 3 | BMW |
| 4 | 2 | 1 | St􏻤llningar |
| 5 | 2 | 2 | Sexleksaker |
| 6 | 2 | 3 | Porrsidor |
| 7 | 3 | 1 | PC |
| 8 | 3 | 2 | Mac |
| 9 | 3 | 3 | Barebone |
+----+---------+--------+---------------+
Hur får jag underkategorierna att listas efter rätt huvudkategori när jag klickar på respektive länk
Denna SQL är helt fel
c är variabeln för huvudkategorin, 1 2 eller 3
<%varC = Request.Querystring("c")
Set rs=objConn.Execute("SELECT * FROM wfSubCat INNER JOIN wfCat ON SubCat = SubCat where SubCat="& varC)
För att hämta alla underkategorier så behöver du inte joina i detta fall.
Däremot om du vill hämta alla huvudkategorier + vald huvudkategoris underkategorier så behöver du det.
Men då blir det lite mer avancerad sqlsats.
<%
Dim varC, rs, objConn
varC = Request.Querystring("c")
Set rs = objConn.Execute("SELECT * FROM wfSubCat WHERE mainCat = " & varC)
%>
Eller föresten, om du t.ex. vill ha med huvudkategorins namn så kan du joina:
<%
Dim varC, rs, objConn
varC = Request.Querystring("c")
Set rs = objConn.Execute("SELECT * FROM wfSubCat s INNER JOIN wfCat c ON s.mainCat = c.id WHERE c.id = " & varC)
%>
Dock när du joinar så bör du speca dina kolumner i selecten, annars får du dubletter av samma värden (ex. mainCat i wfSubCat och id i wfCat)
doggelito skrev:
För att hämta alla underkategorier så behöver du inte joina i detta fall.
Däremot om du vill hämta alla huvudkategorier + vald huvudkategoris underkategorier så behöver du det.
Men då blir det lite mer avancerad sqlsats.
<%
Dim varC, rs, objConn
varC = Request.Querystring("c")
Set rs = objConn.Execute("SELECT * FROM wfSubCat WHERE mainCat = " & varC)
%>
Eller föresten, om du t.ex. vill ha med huvudkategorins namn så kan du joina:
<%
Dim varC, rs, objConn
varC = Request.Querystring("c")
Set rs = objConn.Execute("SELECT * FROM wfSubCat s INNER JOIN wfCat c ON s.mainCat = c.id WHERE c.id = " & varC)
%>
Dock när du joinar så bör du speca dina kolumner i selecten, annars får du dubletter av samma värden (ex. mainCat i wfSubCat och id i wfCat)
är det nåt fel på den här satsen eftersom underföljande kolumner finns med i dessa tabeller
set userRS=objConn.Execute("select userID, username, picture, uid from tblUsers INNER JOIN wfThreads on userID=uid")
Response.Write " <strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"
WebbisNet skrev:
är det nåt fel på den här satsen eftersom underföljande kolumner finns med i dessa tabeller
Jepp, det är det. :)
Du har inte inlaggDatum med i selecten.
Sen är det bra att använda alias på tabellerna utifall samma kolumn finns i båda.
set userRS=objConn.Execute("SELECT u.userID, u.username, u.picture, t.inlaggDatum FROM tblUsers u INNER JOIN wfThreads t ON u.userID = t.uid")
doggelito skrev:
WebbisNet skrev:
är det nåt fel på den här satsen eftersom underföljande kolumner finns med i dessa tabeller
Jepp, det är det. :)
Du har inte inlaggDatum med i selecten.
Sen är det bra att använda alias på tabellerna utifall samma kolumn finns i båda.
set userRS=objConn.Execute("SELECT u.userID, u.username, u.picture, t.inlaggDatum FROM tblUsers u INNER JOIN wfThreads t ON u.userID = t.uid")
får bara
error '80020009'
/Forum/read.asp, line 66
även att den finns med i selecten
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid from tblUsers INNER JOIN wfThreads on userID=uid")
rad66 är
Response.Write " <strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"
Du har förmodligen råkat ut för EOF.
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid from tblUsers INNER JOIN wfThreads on userID=uid")
If Not userRS.Eof Then
Response.Write " <strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"
End If
Set userRS = Nothing
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/Forum/read.asp, line 48
rad 48 är fetmarkerad
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid from tblUsers INNER JOIN wfThreads on userID=uid")
[B]If Not userRS.Eof Then
Response.Write " <strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"[/B]
End If
Do until userRS.eof
Response.Write "<a href="""& userRS("inlaggRubrik") &""">"& userRS("inlaggRubrik") &"</a>"
userRS.movenext: Loop
Set userRS = Nothing
Peter SMedlem sedan dec. 20025 483 inlägg Ett par rader nedanför den fetmarkerade säger du userRS("inlaggRubrik"). Men i SQL-frågan hämtar du inte "inlaggRubrik".
WebbisNet skrev:
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid from tblUsers INNER JOIN wfThreads on userID=uid")
If Not userRS.Eof Then
Response.Write " <strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"
End If
Do until userRS.eof
Response.Write "<a href="""& userRS("inlaggRubrik") &""">"& userRS("inlaggRubrik") &"</a>"
userRS.movenext: Loop
Set userRS = Nothing
Här har du lite farlig kod igen. :)
Överallt där du skriver ut userRS(...) måste/bör du lägga innanför if-taggar för att kolla om userRS innehåller nånting.
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid, inlaggRubrik from tblUsers INNER JOIN wfThreads on userID=uid")
If Not userRS.Eof Then
Response.Write " <strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"
Do until userRS.eof
Response.Write "<a href="""& userRS("inlaggRubrik") &""">"& userRS("inlaggRubrik") &"</a>"
userRS.movenext
Loop
End If
Set userRS = Nothing