webForumDet fria alternativet

Räkna svar

13 svar · 509 visningar · startad av greyhound

greyhoundMedlem sedan maj 20031 472 inlägg
#1

Tjena

Jag håller på att göra ett litet forum, dock har jag lite problem nu. Jag har följande SQL:

SELECT frmPosts.F_Id as T_Id, frmPosts.F_Topic as T_Topic,
frmPosts.F_Views as T_Views, frmPosts.F_Date as T_Date,
Users.U_Nickname as T_Nickname, Users.U_Fornamn as
T_Fornamn, Users.U_Efternamn as T_Efternamn FROM
frmPosts LEFT JOIN Users ON frmPosts.F_Owner =
Users.U_Id WHERE F_Reply = 0 ORDER BY F_Date DESC

Den funkar bra. Men nu vill jag även lägga in en räknare i den frågan om det går. Tabellen frmPosts innehåller en kolumn som heter F_Reply och den visar om det är ett svar och i så fall vilken tråd det tillhör. Jag vill få in så att man får ut även den data ur den där frågan.

Går det att göra eller får jag göra en till fråga som jag kör efter?

LarsGMedlem sedan dec. 200012 464 inlägg
#2
SELECT F.F_Id as T_Id, 
       F.F_Topic as T_Topic,
       F.F_Views as T_Views, 
       F.F_Date as T_Date,
       Users.U_Nickname as T_Nickname, 
       Users.U_Fornamn as T_Fornamn, 
       Users.U_Efternamn as T_Efternamn ,
       (select count(*)
          from frmPosts
         where thread_id = F.thread_id
           and F_Reply = 1) as replies
FROM frmPosts F
LEFT JOIN Users ON frmPosts.F_Owner = Users.U_Id 
WHERE F_Reply = 0 
ORDER BY F_Date DESC
greyhoundMedlem sedan maj 20031 472 inlägg
#3

Saknas det ett "as" i raden "FROM frmPosts F" ??

@ndersMedlem sedan juni 200032 969 inlägg
#4

Nej, AS är valfritt.

greyhoundMedlem sedan maj 20031 472 inlägg
#5

Ok, men jag får inte frågan att funka.

Jag har ändrat den lite:

SELECT F.F_Id as T_Id,
F.F_Topic as T_Topic,
F.F_Views as T_Views,
F.F_Date as T_Date,
Users.U_Nickname as T_Nickname,
Users.U_Fornamn as T_Fornamn,
Users.U_Efternamn as T_Efternamn,
(SELECT count(*) FROM frmPosts
WHERE [B]F_Reply = F.F_Id[/B]) as T_Replies
FROM frmPosts [B]AS[/B] F
LEFT JOIN Users ON [B]F.[/B]F_Owner = Users.U_Id
WHERE [B]F.[/B]F_Reply = 0 ORDER BY [B]F.[/B]F_Date DESC

Men jag får bara felet:

#1064 - You have an error in your SQL syntax.
Check the manual that corresponds to your MySQL
server version for the right syntax to use near
'SELECT count(*) FROM frmPosts
WHERE F_Reply = F.F_Id) as T_Rep
greyhoundMedlem sedan maj 20031 472 inlägg
#6

Båda frågorna funkar bra för sig själv.
Problemet uppstår när dom läggs ihop.

@ndersMedlem sedan juni 200032 969 inlägg
#7

Vilken version av MySQL använder du?

greyhoundMedlem sedan maj 20031 472 inlägg
#8

MySQL 4.0.24

@ndersMedlem sedan juni 200032 969 inlägg
#9

Har du möjlighet att uppgradera?
MySQL stödjer subqueries från version 4.1.

greyhoundMedlem sedan maj 20031 472 inlägg
#10

Ok, ska titta på det. Tackar!

@ndersMedlem sedan juni 200032 969 inlägg
#11

Annars går det att lösa med att skriva om till joins, men det kan ju vara en bra idé att uppgradera ändå. :)

greyhoundMedlem sedan maj 20031 472 inlägg
#12

Har nu uppgraderat till mySQL 4.1.12
Nu funkar allt som det bör.
Tackar LarsG och @nders

desdecadoMedlem sedan juli 2004206 inlägg
#13

Får jag sno denna tråd lite och bygga ut frågan lite? :)

Om man nu vill agregera informationen, alltså jag vill inte räkna ut den varje gång utan vill vid vissa tillfällen köra en sp som går igenom _alla_ trådar och räknar poster och dessa sparas i ett fält i tråd-tabellen, hur skriver man då?

typ som här (fast detta fungerar då inte riktigt...):

UPDATE thread
SET thread_postcount = (SELECT COUNT(*) FROM post p WHERE p.post_threadpointer = thread_id)
WHERE thread_id = post_threadpointer

LarsGMedlem sedan dec. 200012 464 inlägg
#14
UPDATE thread
SET thread_postcount = (SELECT COUNT(*) FROM post p WHERE p.post_threadpointer = thread_id)
WHERE thread_id in(
select post_threadpointer
from post)

Får jag sno denna tråd lite och bygga ut frågan lite?

Jag (och de som bevakar tråden) föredrar nog att du startar en ny tråd.

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