Необходимо обновить отсутствующую информацию в столбце таблицы MySQL - PullRequest
0 голосов
/ 02 января 2012

Я снова вернулся. Я искал и пытался это часами ... Не нашел ответа или даже правильного вопроса.

Я хочу исправить сбойную таблицу, которую я заново создал из памяти (и список членов в Works), используя запрос в phpMyAdmin. Мне нужно заполнить каждого участника всего сообщений.

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  |

Спасибо!

Ответы [ 4 ]

1 голос
/ 02 января 2012

Используя запрос 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;
0 голосов
/ 02 января 2012

попробуйте это:

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)
0 голосов
/ 02 января 2012

Я думаю, вам нужно просто посчитать сообщения по участникам, не так ли?

Если это так, используйте этот SQL:

TRUNCATE TABLE forum_members;
INSERT INTO forum_members(member_id, posts)
 SELECT member_id, COUNT(1) FROM forum_messages GROUP BY member_id;
0 голосов
/ 02 января 2012

Это должно исправить .. Обратите внимание, что код НЕ ИСПЫТАН .Вы должны повторить результат запроса на обновление, чтобы проверить его корректность перед выполнением запроса на обновление

$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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...