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 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
Saknas det ett "as" i raden "FROM frmPosts F" ??
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
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 Vilken version av MySQL använder du?
@ndersMedlem sedan juni 200032 969 inlägg Har du möjlighet att uppgradera?
MySQL stödjer subqueries från version 4.1.
Ok, ska titta på det. Tackar!
@ndersMedlem sedan juni 200032 969 inlägg Annars går det att lösa med att skriva om till joins, men det kan ju vara en bra idé att uppgradera ändå. :)
Har nu uppgraderat till mySQL 4.1.12
Nu funkar allt som det bör.
Tackar LarsG och @nders
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 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.