grey_goose
01-02-2017, 03:47 PM
I've got a query written that more or less counts words, that I can execute on a per-user basis because it needs the userid in WHEREs.
What I'd like to do is be able to update the entire table and run it as a cron job -- but I can't figure out how to get the userid into the subquery.
X = userid
@thisuser = where I need the userids
SET @thisuser := X;
UPDATE user
SET words = (SELECT SUM(words)
FROM (SELECT LENGTH(p.pagetext) - LENGTH(REPLACE(p.pagetext, ' ', ''))+1 AS words
FROM post as p
WHERE userid = @thisuser
UNION ALL
SELECT LENGTH(gm.pagetext) - LENGTH(REPLACE(gm.pagetext, ' ', ''))+1 AS words
FROM groupmessage as gm
WHERE postuserid = @thisuser) a)
WHERE userid = @thisuser;
I'm not sure if I'm going about this the wrong way, or just can't figure out how to fetch the userid of the current row that the query is looped on.
Suggestions?
What I'd like to do is be able to update the entire table and run it as a cron job -- but I can't figure out how to get the userid into the subquery.
X = userid
@thisuser = where I need the userids
SET @thisuser := X;
UPDATE user
SET words = (SELECT SUM(words)
FROM (SELECT LENGTH(p.pagetext) - LENGTH(REPLACE(p.pagetext, ' ', ''))+1 AS words
FROM post as p
WHERE userid = @thisuser
UNION ALL
SELECT LENGTH(gm.pagetext) - LENGTH(REPLACE(gm.pagetext, ' ', ''))+1 AS words
FROM groupmessage as gm
WHERE postuserid = @thisuser) a)
WHERE userid = @thisuser;
I'm not sure if I'm going about this the wrong way, or just can't figure out how to fetch the userid of the current row that the query is looped on.
Suggestions?