我又回来了。一直在搜索和尝试这几个小时......没有找到答案,甚至没有找到正确的问题。
我想使用phpMyAdmin中的查询来修复我从内存(以及Works中的成员列表)重新创建的崩溃表。我需要填写每个成员的总帖子。
forum_messages
member_id | message |
--------------------
1 | Hello |
3 | One, Two, Three |
1 | Howdy! |
2 | Here we are again! |
2 | To answer your question... |
forum_members
member_id | posts |
--------------------
1 | 0 |
2 | 0 |
来自forum_messages,forum_members应该看起来像这样:
forum_members
member_id | posts |
--------------------
1 | 2 |
2 | 2 |
3 | 1 |
谢谢!
答案 0 :(得分:1)
使用INSERT SELECT查询,您应该能够重建您在forum_members表中丢失的数据。
这将返回每个member_id的消息数:
SELECT member_id, COUNT(*) FROM forum_messages GROUP BY member_id;
使用INSERT查询对其进行整理会将其放入表中,而不是像在SELECT查询中那样显示数据。
INSERT INTO forum_members (member_id, posts) SELECT member_id, COUNT(*) FROM forum_messages GROUP BY member_id;
答案 1 :(得分:0)
这应该解决它..请注意代码未测试。您应该回应更新查询的结果,以在执行更新查询之前检查它是否正确
$get_memberid = "SELECT distinct(member_id) as member_id FROM forum_members;";
$Rget_memberid = mysql_query($get_memberid) or die(mysql_error());
while($row_get_memberid = mysql_fetch_array($Rget_memberid)) {
$arr_get_memberid[] = array( "member_id" => $row_get_memberid['member_id'] );
}
for ($c = 0; $c < count($arr_get_memberid); $c++){
$update_count = "UPDATE forum_members set posts = (SELECT count(member_id) from forum_messages where member_id = '".$arr_get_memberid[$c]['member_id']."') where member_id = '".$arr_get_memberid[$c]['member_id']."';";
$Rupdate_count = mysql_query($update_count) or die(mysql_error());
}
答案 2 :(得分:0)
我认为你只需要按成员统计消息,不是吗?
如果是这样,请使用此SQL:
TRUNCATE TABLE forum_members;
INSERT INTO forum_members(member_id, posts)
SELECT member_id, COUNT(1) FROM forum_messages GROUP BY member_id;
答案 3 :(得分:0)
试试这个:
UPDATE forum_members SET posts = (SELECT COUNT(*) FROM forum_messages where forum_messages.member_id = forum_members.member_id GROUP BY forum_messages.member_id)