webForumDet fria alternativet

Två select i en SQL

10 svar · 187 visningar · startad av saw

sawMedlem sedan mars 20011 880 inlägg
#1

Jag använder mig av denna SQL när jag öppnar upp mitt forum (ser ut som på detta forumet nästan).

RS.OPEN "SELECT  Forum.ForumId, Forum.InlaggID, Forum.ReplyID, Forum.Amne,  Inlagg.Datum, Forum.Hits, Forum.Icon, Forum.Svar, Inlagg.Org, Person.PersonId, Person.Namn, Person.Epost, Person.Skrivit, Inlagg.InlaggId, Inlagg.Inlagg "&_
" FROM Person INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId WHERE  Org = TRUE ORDER BY Datum DESC;", connection, adopenkeyset, adlockoptimistic

Denna SQL fungerar kanon.
Den visar alltså på det första medelandet.
Sen har jag ett script som någon hjälpte mig med för några månader sedan för att sen om det finns några nya inlägg.


If Cdate(LatestThread) > Cdate(Kaka) Then
newPost = "<img border=""0"" src=""bild/brev.gif"">"
strnewPost=strnewPost + 1
Else
newPost = "-"
End If
response.write newPost

Då visar denna om någon har startat ett nytt ämne.
Problemet är att om någon svarar på en tråd, så syns inte detta med scriptet ovan. inte heller kan man sortera med ORDER BY med det scriptet, för att ta hänsyn till nya inlägg.

Jag har kommit fram till att jag måste ha en SELECT-sats inuti denna SQL:en som tar fram datumet som ett AS newDatum...
Någon som försåt och kan hjälpa mig?

------------------
saw
__
saw@songer.com
www.mp3.com/saw_songer
_
_

sawMedlem sedan mars 20011 880 inlägg
#2

Den SQL jag försöker med ser ut så här:

RS.OPEN "SELECT (SELECT Inlagg.Datum As newDatum FROM Inlagg INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId) "&_
" Forum.ForumId, Forum.InlaggID, Forum.ReplyID, Forum.Amne,  Inlagg.Datum, Forum.Hits, Forum.Icon, Forum.Svar, Inlagg.Org, Person.PersonId, Person.Namn, Person.Epost, Person.Skrivit, Inlagg.InlaggId, Inlagg.Inlagg "&_
" FROM Person INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId WHERE  Org = TRUE ORDER BY newDatum DESC;", connection, adopenkeyset, adlockoptimistic

Men den duger naturligtvis inte. Jag får följande fel:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel. i frågeuttrycket '(SELECT Inlagg.Datum As newDatum FROM Inlagg INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId) Forum.ForumId'.
/Hemsidor/GlobalaForeningen/Forum/Index.asp, line 49

Några tips?

------------------
saw
__
saw@songer.com
www.mp3.com/saw_songer
_
_

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Det saknas ett komma efter din subselect. Du måste också se till att den returnerar högst ett värde.

RS.OPEN "SELECT (SELECT max(Inlagg.Datum) As newDatum FROM Inlagg INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId), "&_
" Forum.ForumId, Forum.InlaggID, Forum.ReplyID, Forum.Amne, Inlagg.Datum, Forum.Hits, Forum.Icon, Forum.Svar, Inlagg.Org, Person.PersonId, Person.Namn, Person.Epost, Person.Skrivit, Inlagg.InlaggId, Inlagg.Inlagg "&_
" FROM Person INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId WHERE Org = TRUE ORDER BY newDatum DESC;", connection, adopenkeyset, adlockoptimistic

------------------
essentitia preter non sans multiplicandum

sawMedlem sedan mars 20011 880 inlägg
#4

Tack LarsG men tyvärr.
Din kod resulterar i följande error

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel. i frågeuttrycket '(SELECT max(Inlagg.Datum) As newDatum FROM Inlagg INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId)'.
/Hemsidor/GlobalaForeningen/Forum/Index.asp, line 50

Vad tror du?

------------------
saw
__
saw@songer.com
www.mp3.com/saw_songer
_
_

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Jag tror att dom som skrivit sql-kompilatorn i Access har gjort fel. Jag får inget syntaxfel när jag testar frågan. Om du flyttar ut as Newdatum då?

RS.OPEN "SELECT (SELECT max(Inlagg.Datum) FROM Person INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId) as newDatum, "&_
" Forum.ForumId, Forum.InlaggID, Forum.ReplyID, Forum.Amne, Inlagg.Datum, Forum.Hits, Forum.Icon, Forum.Svar, Inlagg.Org, Person.PersonId, Person.Namn, Person.Epost, Person.Skrivit, Inlagg.InlaggId, Inlagg.Inlagg "&_
" FROM Person INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId WHERE Org = TRUE ORDER BY newDatum DESC;", connection, adopenkeyset, adlockoptimistic

Jag ändrade i subselecten också, borde det inte vara person direkt efter from?

------------------
essentitia preter non sans multiplicandum

sawMedlem sedan mars 20011 880 inlägg
#6
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/Hemsidor/GlobalaForeningen/Forum/Index.asp, line 50

Tyvärr LarsG

------------------
saw
__
saw@songer.com
www.mp3.com/saw_songer
_
_

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Jo visst ja.

Access tillåter inte att du gör order by på newdatum, du får skriva

RS.OPEN "SELECT (SELECT max(Inlagg.Datum) FROM Person INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId) as newDatum, "&_
" Forum.ForumId, Forum.InlaggID, Forum.ReplyID, Forum.Amne, Inlagg.Datum, Forum.Hits, Forum.Icon, Forum.Svar, Inlagg.Org, Person.PersonId, Person.Namn, Person.Epost, Person.Skrivit, Inlagg.InlaggId, Inlagg.Inlagg "&_
" FROM Person INNER JOIN (Forum RIGHT JOIN Inlagg ON Forum.ForumId = Inlagg.InlaggId) ON Person.PersonId = Inlagg.PersonId WHERE Org = TRUE ORDER BY [b]1[/b] DESC;", connection, adopenkeyset, adlockoptimistic

1 innebär att man sorterar med avseende på 1:a kolumnen i select-listan

------------------
essentitia preter non sans multiplicandum

sawMedlem sedan mars 20011 880 inlägg
#8

Tack LarsG.
Jag vet bara inte hur jag skall tacka dig, du har varit en oehörd stor hjälp, intebara idag utan tidigare.
Kunde jag så skulle det stå blommor och chokolad hos dig nu.

------------------
saw
__
saw@songer.com
www.mp3.com/saw_songer
_
_

OveRRidEMedlem sedan feb. 200112 078 inlägg
#9

O fy utav h*lvete vilka SQL-strulerier! Min hjärna får verkligen härdsmälta av sånt där. ;)

------------------
"-Man kan faktiskt supa nykter." -Mange P

sawMedlem sedan mars 20011 880 inlägg
#10

Jag var väldigt glad när LarsG hjälpte mig med min SQL, men tyvärr så fungerade den inte som jag ville.
På indexsidan så visar jag bara medelandena(början av tråden). Vill man läsa mera så får man klicka på tråden.
Nu ville jag ju att om det har kommit ett nytt medelande inne i tråden, så skulle en bild dyka upp, och tråden skulle ligga högst upp (ORDER BY...)
Resultatet av denna SQL som LarsG hjälpte mig med resulterar i att ALLA medelanderna(början till tråd) fick sin bild.

Kan det tänkas att jag måste ha två oberoeende SQLer gämmföra med t ex InlaggID, eller hur skall jag lösa detta??

------------------
saw
__
saw@songer.com www.mp3.com/saw_songer
_
_

[Redigerat av saw den 15 jan 2002]

sawMedlem sedan mars 20011 880 inlägg
#11

Löst

------------------
saw
__
saw@songer.com
www.mp3.com/saw_songer
_
_

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