Кто хорошо разбирается в mysql?

Print RSS
508

Author
Господин ПЖ
0
Иногда имеются вопросы, нужны на них ответы
А

Пацак
0
я наверное ток процентов на 30-40 знаю sad
но если че, спрашивай)
Author
Господин ПЖ
0
вот у меня есть такая база в ней 2 таблицы
CREATE TABLE news (
news_id INTEGER PRIMARY KEY NOT NULL,
news_title varchar(100) NOT NULL,
news_text TEXT NOT NULL,
news_author varchar(20) NOT NULL,
news_time INTEGER UNSIGNED NOT NULL,
news_comments INTEGER UNSIGNED NOT NULL DEFAULT '0'
);
CREATE INDEX index_news_id ON news (news_id);
CREATE TABLE comments (
comments_id INTEGER PRIMARY KEY NOT NULL,
comments_news_id INTEGER UNSIGNED NOT NULL,
comments_text TEXT NOT NULL,
comments_author varchar(20) NOT NULL,
comments_time INTEGER UNSIGNED NOT NULL,
comments_ip varchar(20) NOT NULL,
comments_brow varchar(25) NOT NULL
);
Author
Господин ПЖ
0
я создаю триггер который делает пересчет комментариев в таблице comment и обновляет данные в news
CREATE TRIGGER trigger_comments_delete AFTER DELETE ON comments
FOR EACH ROW BEGIN
UPDATE news SET news_comments=(SELECT count(*) FROM comments WHERE news.news_id=comments.comments_news_id);
END;
правильный ли это запрос
UPDATE news SET news_comments=(SELECT count(*) FROM comments WHERE news.news_id=comments.comments_news_id);
Р

Пацак
0
А если делать не пересчет,а просто приплюсовывать по мере добавления? По моему проще будет
А

Землянин
0
Если я тебя правильно понял...
<?php
$allcomment = 0;
$q = mysql_query("SELECT `id` FROM `comments` WHERE `news_id` ='". $comments_news_id) ."';");
while($a=mysql_fetch_array($q)) { $allcomment ++; } //Считаем колличество комментарий
mysql_query("UPDATE `news` SET `news_comments`='". $allcomment ."' WHERE `news_id`='". $news_id ."';"); //и записываем
?>
можно проще, но я функцию забыл...
Author
Господин ПЖ
0
да мне для триггера надо было такое не пойдет, ладно уж я без триггера решил сделать

Пацак
0
иль проще
7. $allcomm = mysql_num_rows($q);
И потом обновляй
триггер лишнее...
Author
Господин ПЖ
0
еще есть вопрос, при добавлении нового столбца в таблицу
к примеру
ALTER TABLE news ADD news_test INTEGER UNSIGNED NOT NULL значение не должно быть NULL но и не DEFAULT '' типа как при создании
news_test INTEGER UNSIGNED NOT NULL как быть в этой ситуации
А

Пацак
0
А почему поле не должно быть NULL?
Вроде бы наоборот, если в таблице есть уже записи, то добавить поле со значением NOT NULL и без DEFAULT не получиться.
Stickers / Tags / Rules / Top topics / Top Posts / Search