Är det inte bättre att göra bakvänt?
SELECT COUNT(*) as posted FROM inlagg WHERE memberId = " & id
Då får du alltid rätt siffra vid presentationen.
20 svar · 270 visningar · startad av Mika3l
När jag tar bort ett inlägg från ett forum så sätts antalinlagg -1 på personen som har skrivit inlägget, inga problem så långt.
Men om man ska ta bort en hel tråd(med svarsinläggen till), hur gör man då för att sätta antalinlagg -1 på alla personer som har skrivit inlägg?
Hoppas ni förstår vad jag menar!
Är det inte bättre att göra bakvänt?
SELECT COUNT(*) as posted FROM inlagg WHERE memberId = " & id
Då får du alltid rätt siffra vid presentationen.
Jo, det är ju en bra idé men jag funderar på om det inte blir ganska segt att räkna ut hur många inlägg folk har gjort för varje inlägg i en tråd(?)...
Njea, det blir det kanske.
Går ju göra på ditt vis också.
Det var det du nämde senast som jag hade tänkt mig, men jag vet inte riktigt hur koden ska vara, någon som kan hjälpa mig med den?
Det beror helt på hur din tabellstruktur ser ut, vill du visa en liten sådan ?
inlagg
--- IID(Autonumber, primärnyckel) --- namn(text) --- antalsvar(number) --- svar(yes/no)
medlemmar
--- MID(Autonumber, primärnyckel) --- anvnamn(text) --- antalinlagg
Nog det enda du behöver veta tror jag...(?)
Hur vet du vilka svar som hör till vilken tråd?
Glömde det fältet, svartill heter det(ligger i tabellen inlagg som du nog förstår ;) ) och det är av typen number.
Jag skulle endast sparat MID i tabellen inlagg och inte hela namnet.
Mycket otestat av en trött lamp, men du hajar kanske principen?
sql ="select * from inlagg where IID = " & request.querystring("MessId") & " OR svartill = " & request.querystring("MessId")
set rs = conn.execute(sql)
while not rs.eof
sql ="update medlemmar set antalinlagg = antalinlagg - 1 where anvnamn = '" & rs("namn") & "' "
conn.execute(sql),,128
rs.movenext
wend
Jag skulle endast sparat MID i tabellen inlagg och inte hela namnet.
Namnet sparas där för att visa vem som har skrivit inlägget också. ;)
Koden du skickade är en sådan jag hade tänkt mig ungefär, fast jag testar den senare idag ;) , lite trötter nu... :p
Mika3l skrev:
Jag skulle endast sparat MID i tabellen inlagg och inte hela namnet.
Namnet sparas där för att visa vem som har skrivit inlägget också. ;)
Men gör du en join mellan de två tabeller, får du ut namnet ändå ;)
Men gör du en join mellan de två tabeller, får du ut namnet ändå
Jo, men nu kan inte jag så mycket SQL. ;)
If you ask, we give you the answer :D
Hehe, ok, hur gör man joins?
/Mika3l - Åker bort imorgon så därför får du inga svar från mig på ett par dagar. ;)
finns två sätt:
1)
SELECT field1, field2, field3, field4
FROM table1
INNER JOIN table2
ON table1.field = table2.field
SELECT field1, field2, field3, field4
FROM table1, table2
WHERE table1.field = table2.field
Jag brukar använda den första varianten.
RED: Observera att fälten i villkoren ON och WHERE måste ha jämförbart innehåll och vara av samma datatyp.
RED2: Det finns fler varianter än INNER JOIN - LEFT, OUTER och RIGHT
Mika3l skrev:
Jo, men nu kan inte jag så mycket SQL. ;)
Lite kvällsläsning ;)
http://www.devguru.com/Technologies..._sql_intro.html
http://www.devdex.com/
http://www.w3schools.com/sql/
http://sqlcourse.com/
http://www.sqlindex.com/
http://www.sqlexperts.com/
Öhh, jaha?
Detta gjorde inte att jag fattade så mycket. :p ;)
Förklara lite mer är du snäll. :)
Låt oss säga att du har två tabeller som ett exempel:
Inlagg och Members
Tabellen members har ett unikt id, memberid och ett användarnamn, username. För att veta vem som gjort varje inlägg sparar du ditt memberid i tabellen Inlagg istället för hela användarnamnet. Då har du skapat en relation mellan tabellerna och du kan hämta data som är relaterad till varandra. Denna hämtning kan se ut så här:
SELECT Inlagg.message, Inlagg.dteDate, Members.Username, Members.MemberId
FROM Inlagg
INNER JOIN Members
ON Inlagg.MemberId = Members.MemberId
Då får du ut datumet för inlägget, själva texten i inlägget, användarnamnet som gjort inlägget och användarens id. Fördelen är att du inte dubbellagrar samma data på flera ställen.