I början av Januari 2014 låstes Whoa och du kan alltså ej logga in eller skriva något nytt i forumen. Innehåll i forum osv kommer finnas tillgängligt. Läs Mer »

Forum i ASP ang. Sortering

Hobby & Fritid - Datorer & Teknik

   

2005-06-25 19:08

Forum i ASP ang. Sortering

Ska börja ta tag i att försöka fixa ett bra forum igen.

Jag har en inläggstabell där alla trådar finns.
Sedan har jag en svarstabell där alla svar i tråden finns.
Min sida hämtar ut alla inlagg från Inläggstråden (inlagg) och listar alla trådar på sidan.

Tabellerna ser ut på följande sätt:
INLAGG:
ID | Rubrik | Username | Inlagg | Datum

SVAR:
INLAGGID | ID | Rubrik | username | Inlagg | Datum

ID: Är samma siffra/siffor i båda.
INLAGGID: Är ett nummer som varje inlägg får, ju högre nummer desto nyasre är inlägget. (nyast = högst)

Allt funkar perfekt förutom att jag vill hämta ut inläggen exakt som nu, fast jag vill sortera dom efter INLAGGID i Svar-tabellen.

min sql är nu: "SELECT * FROM inlagg order by datum desc"

Hur ska SQL:en se ut för att det ska gå att göra som jag vill?


Jätte tacksam för svar!

b-b-bassan!

2005-06-25 19:37
varför kan den inte sortera på datumet fortfarande?
Om man lägger in ett svar så får ju det senaste svaret nyast datum och därför hamnar det överst.

Eller hur menar herrn?
Denna användare har skrivit alla inlägg där användaren har tagits bort från whoa.

2005-06-25 19:46
assembly

Man kan lika gäran sortera efter datumet i svar också, men jag valde detta.

Om du menar, som jag tror du menar, så hämtar den bara ut datumet på när tråden startades. Eftersom det är 2 olika tabeller man måste joina på något vänster, som jag inte vet hur man gör och vill veta.
b-b-bassan!

2005-06-27 07:42
Va kör du för databas?
Denna kan nog funka om den stödjer subselect

SELECT * FROM inlagg WHERE id = (SELECT id, inlaggid FROM svar ORDER BY inlaggid)
 

2005-06-27 09:49
Jag använder access.

"Du har skrivit en underfråga som kan returnera flera fält utan att använda det reserverade ordet EXISTS i huvudfrågans FROM-instruktion. Ändra underfrågans SELECT-uttryck så att endast ett fält efterfrågas."
b-b-bassan!

2005-06-27 12:21
Jag ändrade om lite i sql:en och tog bort 1 uttryck.
Jag hade en tråd där jag hade svarat på tråden, då kom den endast upp. Sen skrev jag i fler trådar och då fick jag svaret:

"Det går inte att returnera mer än en post från denna underfråga."
b-b-bassan!

2005-06-27 13:25
Hmm, jag har inte testat subselect på access, kanske funkar annorlunda där
 

2005-06-27 13:42
Måste ju finnas någonn join som borde funka? Men vilken ska jag använda mig av?
b-b-bassan!

2005-06-28 14:27
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
b-b-bassan!

2005-06-28 15:39
fråga qvanton, har är rätt high på asp :)
Niceness!

2005-06-29 00:01
SELECT * FROM inlagg INNER JOIN svar ORDER BY INLAGGID DESC?
this is for my niggas and my nymphos, non stop bangin like a dilla instrumental

2005-06-29 00:16
Har faktiskt testat den..

Microsoft JET Database Engine fel '80040e14'
Syntaxfel i FROM-instruktion.
b-b-bassan!
Graffare

2005-06-29 11:06
om du inte får nå vettigt svar så finns ju alltid: www.aspsidan.se
 

2005-06-29 12:26
Har försökt där, hatar den sidan ibland. Segt med att få svar osv. osv.
b-b-bassan!

2005-06-30 00:59
^^^^
b-b-bassan!

2005-07-04 15:24
Du vill alltså joina ihop tabellen som har själva tråden med tabellen som har alla svar?

Din join ser helt vriden ut. :)

Kika på en liten join som jag använder och se om du kan förstå hur man ska göra.. (Du ska självklart ändra tabell/kolumn-namnen)

sqlEdit = "Select t_Releases.cR_Nuked,t_Users.cU_Name From t_Releases Inner Join t_Users On t_Users.cU_ID = t_Releases.cR_InputUserID Where t_Releases.cR_ID = '"& strID &"'"
http://anjaparson.istheshit.net/
Förresten.. Jag hatar MBFIMG's användare på Whoa! HATAR!

2005-07-04 16:09
som du kanske ser så är jag ingen hejare på SQL. Jag förstår ungefär vad som står där men jag vet inte riktigt vad jag ska ändra och till vad.. :O
b-b-bassan!

2005-07-04 21:08
SELECT INLAGG.* FROM INLAGG INNER JOIN SVAR ON SVAR.ID = INLAGG.ID ORDER BY SVAR.INLAGGID DESC

Jag förstår inte riktigt hur du menar, men nåt sånt där kanske?
 

2005-07-04 22:38
Eksem P22

Funkade inte. Typblandningsfel i uttryck.

Förklarar exakt som jag vill ha det:
Jag vill rada upp alla inlagg som finns i tabellen "inlagg" men vill sortera efter det nyaste datumet i tabellen "svar.
Så att det blir som här på whoa att denna tråden kommer högst upp i detta forum när jag postar mitt inlagg. Så att den INTE sorterar efter datumet när tråden skapades.

------

Mer exakt kan jag inte vara, hoppas någon sql-mästare kan komma till min räddning. Har verkligen provat mycket nu!
b-b-bassan!

2005-07-05 13:51
SELECT INLAGG.* FROM INLAGG INNER JOIN SVAR ON INLAGG.ID = SVAR.ID ORDER BY SVAR.INLAGGID DESC

Kanske fungerar? Men typblandningsfel är konstigt, det innebär att SVAR.ID och INLAGG.ID inte är kompatibla och inte går att jämföra? Vad har du för fälttyp till de två fälten?
 

2005-07-05 13:56
Inlagg.id = är en räknare
Svar.id = text
b-b-bassan!

2005-07-05 14:14
jag testade:

SELECT INLAGG.* FROM INLAGG INNER JOIN SVAR ON inlagg.rubrik = svar.rubrik ORDER BY SVAR.INLAGGID DESC


Då blev det som en ny tråd för varje nytt inlagg i forumet, med samma rubrik.

Om jag har 3 trådar som heter. Film, musik och bilder.

Om jag skriver ett inlagg i en helt ny tråd som heter film vill jag ha så att det blir:

FILM
MUSIK
BILDER

Nu blir det istället:
FILM
FILM
MUSIK
BILDER
b-b-bassan!

2005-07-06 14:39
^^^^
b-b-bassan!

2005-07-06 21:21
Rubrik-grejjen kommer att bita dig i arslet sen, gör om SVAR.ID till ett siffer-fält istället.

Det andra problemet har jag också råkat ut för en gång. Jag hade byggt min databas ungefär likadant, och jag kom inte på någon bra SQL-lösning, så jag antar att det inte är det bästa sättet att designa sin databas på (fast det verkar ju vettigt som du löst det, fan vet). Jag har i vilket fall inga bra lösningar på det, men du kan få två jobbiga:

A
Lägg till ett fält som INLAGGID i INLAGG-tabellen också. När du lägger in ett nytt SVAR, så uppdatera INLAGG.INLAGGID. Nu kan du skippa SVAR-tabellen när du ska lista INLAGG-posterna.

B
Använd (ASP/PHP/ASP.NET)-kod för att komma runt problemet istället. Gör en flagga där du sparar föregående INLAGG.ID när du skriver ut dem, och ha en IF-sats som jämför det IDt med det nya, och om det är samma, så skriv inte ut det. Like so:

while not recordset.EOF
var lastID
if not lastID = recordset("ID") then
response.write(recordset("rubrik"))
end if
lastID = recordset("ID")
recordset.movenext
wend

(eller nåt i den stilen)