23. april 2003 - 14:29Der er
18 kommentarer og 1 løsning
SQL-forespørgsler til arkiv i debatforum
Du er her : Eksperten : Programmering : Script : ASP : debat-arkiv med 2 slags tråde :
Sidste nyt fra Eksperten : Eksperten har været nede Eksperten har været ramt af alvorlige tekniske problemer, der har betydet, at sitet har været nede hele weekenden. Det beklager vi. Nedetiden blev ekstra lang, da vores overvågningssoftware også har f... læs mere
debat-arkiv med 2 slags tråde 100 point fra sp Luk annonce Hej eksperter:-)
Jeg er igang med at lave arkiv-delen i et debat-forum.
Jeg har nogle poster i en database. Hver post har 2 felter med 2 tidspunkter. Felterne hedder "Posted" og "Followed".
Den øverste post i en tråd kan man se ved at "Posted" og "Followed" er ens.
Er posten besvaret er "Posted" og "Followed" forskellige Man kan se hvilke indlæg der hører sammen i en tråd ved at se at "Posted" er ens.
I arkiv-delen vil jeg vise de indlæg hvor det f.eks. er 30 dage siden der sidst har været debat i tråden.
Dette har jeg fået til at virke ved at bruge 2 SQL-sætninger. fdays tidspunktet nu minus 30 dage
Først finder jeg det sidste indlæg i tråden: "Followed" skal være mindre end eller af lig med 30 og "Posted" og "Followed" skal være forskellige.
Set rs = Conn.Execute ("SELECT Top 1 * FROM " & username & " WHERE Followed <= '" & fdays & "' AND Posted <> Followed ORDER BY Followed DESC;")
Så finder jeg det første indlæg i hver tråd
SQL="SELECT * FROM " & username & " WHERE Posted < '" & rs("Posted") & "' AND Posted = Followed AND Trash=0 ORDER BY Posted DESC, Followed ASC;"
Nu får jeg vist alle tråde hvor det er 30 dage siden der sidst har været debat i tråden.
Nu kommer så problemet: Problemet er at hvis der ikke er nogle der har svaret på indlægget har der jo ikke være nogen debat. Jeg vil gerne have arkiveret de tråde hvor der ikke har været nogen debat. Så mit arkiv skal vise: Hvis tråden kun indeholder 1 indlæg, så skal det vises hvis det er 30 dage gammelt. Hvis tråden indeholder mere end 1 indlæg, så skal tråden vises hvis det sidste indlæg i tråden er 30 dage gammelt.
På denne måde skal det være en kombination. 2 slags tråde. Kan man lave en SQL-forspørgsel som kan kombinere det?
select t1.* from " & username & " t1 left join " & username & " t2 on (t1.Prosted<t2.Posted) and t1.Posted=t1.Followed and t1.Trash=0 ORDER BY t1.Posted DESC, t1.Followed ASC
Fejl: Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E21) ODBC driver does not support the requested properties. /debat/arkiv.asp, line 60
set rsClients= Server.CreateObject("ADODB.RecordSet")
SQL = "select t1.* from " & username & " t1 left join " & username & " t2 on (t1.Posted< t2.Posted) and t1.Posted=t1.Followed and t1.Trash=0 ORDER BY t1.Posted DESC, t1.Followed ASC;"
Jeg har tilføjet lidt til den: SELECT * FROM " & username & " WHERE Posted = Followed AND Trash=0 AND Posted IN (SELECT Posted FROM " & username & " GROUP BY Posted HAVING MAX(Followed) < '" & fdays & "') ORDER BY Posted DESC, Followed ASC
Jeg sidder med acces. Det er en fejl at jeg har oprettet mit spm her, men det virker alligevel - simpel SQL Kan man også sige??:
SELECT COUNT (*) FROM " & username & " WHERE Posted = Followed AND Trash=0 AND Posted IN (SELECT Posted FROM " & username & " GROUP BY Posted HAVING MAX(Followed) < '" & fdays & "') ORDER BY Posted DESC, Followed ASC
Og hvis jeg vil have samtlige indlæg, skal jeg vel bare fjerne "Posted = Followed" ?? SELECT COUNT (*) FROM " & username & " WHERE Trash=0 AND Posted IN (SELECT Posted FROM " & username & " GROUP BY Posted HAVING MAX(Followed) < '" & fdays & "') ORDER BY Posted DESC, Followed ASC
Nåh det var ihvertfald noget jeg kunne bruge! Nu er jeg lidt forvirret over at jeg kan bruge det fra denne kategori. Spørgsmålet er nu hvor jeg skal oprette mine spm. fremover i Acces eller MS SQL. Jeg har et spm som jeg havde store problemer med i "Acces". Det som har virket bedst, er de svar som jeg har fået i MS SQL... Det er underligt ikke?
Der er prøvet meget, som ser rigtigt ud, men det giver bare fejl indtil til sidst...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.