[英]Need to update missing info in mySQL table column
I'm back again. 我又回来了 Been searching and trying this for hours... Haven't found an answer or even the right question.
一直在搜索并尝试了几个小时……找不到答案,甚至没有找到正确的问题。
I want to fix a crashed table that I recreated from memory (and the members list in Works) using an query in phpMyAdmin. 我想修复使用phpMyAdmin中的查询从内存(以及Works中的成员列表)中重新创建的崩溃表。 I need to populate each members total posts.
我需要填充每个成员的帖子总数。
forum_messages 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 forum_members
member_id | posts |
--------------------
1 | 0 |
2 | 0 |
From forum_messages, forum_members should end up looking like this: 在forum_messages中,forum_members应该最终看起来像这样:
forum_members forum_members
member_id | posts |
--------------------
1 | 2 |
2 | 2 |
3 | 1 |
Thanks! 谢谢!
Using an INSERT SELECT query, you should be able to rebuild the data you had lost in the forum_members table. 使用INSERT SELECT查询,您应该能够重建在forum_members表中丢失的数据。
This would return the number of messages per member_id: 这将返回每个member_id的消息数:
SELECT member_id, COUNT(*) FROM forum_messages GROUP BY member_id;
Collating it with an INSERT query puts it into the table instead of displaying the data as it normally would in an SELECT query. 将其与INSERT查询进行整理会将其放入表中,而不是像通常在SELECT查询中那样显示数据。
INSERT INTO forum_members (member_id, posts) SELECT member_id, COUNT(*) FROM forum_messages GROUP BY member_id;
This should fix it.. Please note that the code is NOT TESTED . 这应该可以解决。.请注意,代码未测试 。 You should echo the outcome of the update query to check if it's correct before executing the update query
您应该在执行更新查询之前,回显更新查询的结果以检查其是否正确。
$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());
}
I think you need just to count messages by members, isn't it? 我认为您只需要按成员数统计邮件,不是吗?
If so, use this SQL: 如果是这样,请使用以下SQL:
TRUNCATE TABLE forum_members;
INSERT INTO forum_members(member_id, posts)
SELECT member_id, COUNT(1) FROM forum_messages GROUP BY member_id;
尝试这个 :
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.