Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Очень нужна помощ в написании запроса

Сообщения:  [1-10]   [11-12] 

 
 автор: TetRiska   (26.04.2009 в 23:56)   письмо автору
 
   для: Trianon   (26.04.2009 в 23:43)
 

Прошу прощения все сработало :) Обновлял нету таблицу и поля попутал :) Благодарю за помощь

  Ответить  
 
 автор: Trianon   (26.04.2009 в 23:43)   письмо автору
 
   для: TetRiska   (26.04.2009 в 23:34)
 

Еще раз.
Какая ошибка диагностируется?
Не какой запрос её вызывает, а какую диагностику возвращает сервер MySQL?

Вполне возможно, что в запросе и вправду ошибка. Я его не проверял.
Но сервер-то на ошибки как-то реагирует?

  Ответить  
 
 автор: TetRiska   (26.04.2009 в 23:34)   письмо автору
 
   для: Trianon   (26.04.2009 в 23:21)
 

насчет растяжки запроса за пределы окна я не учел:(
ах да я не подумал, что нужно выше поместить запрос обновления:
$row = $db->super_query("SELECT id, autor FROM " . PREFIX . "_post where id = '$id'");

        if ($row['id']) {
          $db->query("UPDATE autor u JOIN ( SELECT user_id, COUNT(user_id) AS cmts 
FROM " . USERPREFIX . "_comments WHERE post_id = $id GROUP BY user_id ) AS s ON  
u.id = s.user_id SET comm_num = comm_num - cmts ");
           $db->query("DELETE FROM " . PREFIX . "_post WHERE id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_comments WHERE post_id='{$row['id']}'");
                   ................

ошибка ниже я указал, повторюсь:
UPDATE autor u JOIN ( SELECT user_id, COUNT(user_id) AS cmts FROM media_comments
WHERE post_id = 233 GROUP BY user_id ) AS s ON u.id = s.user_id SET
comm_num = comm_num - cmts

  Ответить  
 
 автор: Trianon   (26.04.2009 в 23:21)   письмо автору
 
   для: TetRiska   (26.04.2009 в 23:07)
 

За каким чортом Вы растянули запрос в непрерывную строку?
Чтоб текст в ширину окна не влезал?!!

  Ответить  
 
 автор: Trianon   (26.04.2009 в 23:19)   письмо автору
 
   для: TetRiska   (26.04.2009 в 23:07)
 

Во-первых, какая именно?
Во-вторых, ну так думать-то ведь никто не запрещал?
Если сперва из таблицы с комментариями всё удалить, какой смысл потом по ней апдейт делать?

  Ответить  
 
 автор: TetRiska   (26.04.2009 в 23:07)   письмо автору
 
   для: Trianon   (26.04.2009 в 22:58)
 

Хмм...в смысле? Добавляю новость (она записывается в таблицу post), добавляю разными юзерами комменты в эту новость (они записываются в таблицу comments со ссылкой на эту новость). Вот использовал запрос выше приведенный, видать неправильно записал.
$row = $db->super_query("SELECT id, autor FROM " . PREFIX . "_post where id = '$id'");

        if ($row['id']) {
           $db->query("DELETE FROM " . PREFIX . "_post WHERE id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_comments WHERE post_id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_poll WHERE news_id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_poll_log WHERE news_id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_tags WHERE news_id = '{$row['id']}'");
           $db->query("UPDATE autor u JOIN ( SELECT user_id, COUNT(user_id) AS cmts FROM " . USERPREFIX . "_comments WHERE post_id = $id GROUP BY user_id ) AS s ON  u.id = s.user_id SET comm_num = comm_num - cmts ");

ошибка:
UPDATE autor u JOIN ( SELECT user_id, COUNT(user_id) AS cmts FROM media_comments WHERE post_id = 232 GROUP BY user_id ) AS s ON  u.id = s.user_id SET comm_num = comm_num - cmts

  Ответить  
 
 автор: Trianon   (26.04.2009 в 22:58)   письмо автору
 
   для: TetRiska   (26.04.2009 в 22:40)
 

Впечатление такое, что пользователи к этой борде уже потом прикручивались.

  Ответить  
 
 автор: TetRiska   (26.04.2009 в 22:40)   письмо автору
 
   для: Trianon   (26.04.2009 в 08:26)
 

Вот бек пару таблиц:
CREATE TABLE `media_comments` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `post_id` int(11) NOT NULL default '0',
  `user_id` mediumint(8) NOT NULL default '0',
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `autor` varchar(40) NOT NULL default '',
  `email` varchar(40) NOT NULL default '',
  `text` text NOT NULL,
  `ip` varchar(16) NOT NULL default '',
  `is_register` tinyint(1) NOT NULL default '0',
  `approve` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`id`),
  KEY `user_id` (`user_id`),
  FULLTEXT KEY `text` (`text`)
) ENGINE=MyISAM AUTO_INCREMENT=145 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=145 ;

CREATE TABLE `media_post` (
  `id` int(11) NOT NULL auto_increment,
  `autor` varchar(40) NOT NULL default '',
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `short_story` text NOT NULL,
  `full_story` text NOT NULL,
  `xfields` text NOT NULL,
  `title` varchar(255) NOT NULL default '',
  `descr` varchar(200) NOT NULL default '',
  `keywords` text NOT NULL,
  `category` varchar(200) NOT NULL default '0',
  `alt_name` varchar(200) NOT NULL default '',
  `comm_num` smallint(5) unsigned NOT NULL default '0',
  `allow_comm` tinyint(1) NOT NULL default '1',
  `allow_main` tinyint(1) unsigned NOT NULL default '1',
  `allow_rate` tinyint(1) unsigned NOT NULL default '1',
  `approve` tinyint(1) NOT NULL default '0',
  `fixed` tinyint(1) NOT NULL default '0',
  `rating` smallint(5) NOT NULL default '0',
  `allow_br` tinyint(1) NOT NULL default '1',
  `vote_num` smallint(5) unsigned NOT NULL default '0',
  `news_read` mediumint(8) unsigned NOT NULL default '0',
  `votes` tinyint(1) NOT NULL default '0',
  `access` varchar(150) NOT NULL default '',
  `expires` date NOT NULL default '0000-00-00',
  `symbol` varchar(3) NOT NULL default '',
  `flag` tinyint(1) NOT NULL default '1',
  `editdate` varchar(15) NOT NULL default '',
  `editor` varchar(40) NOT NULL default '',
  `reason` varchar(255) NOT NULL default '',
  `view_edit` tinyint(1) NOT NULL default '0',
  `tags` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `autor` (`autor`),
  KEY `alt_name` (`alt_name`),
  KEY `category` (`category`),
  KEY `approve` (`approve`),
  KEY `allow_main` (`allow_main`),
  KEY `date` (`date`),
  KEY `symbol` (`symbol`),
  KEY `comm_num` (`comm_num`),
  KEY `tags` (`tags`),
  FULLTEXT KEY `short_story` (`short_story`,`full_story`,`xfields`,`title`)
) ENGINE=MyISAM AUTO_INCREMENT=232 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=232 ;

  Ответить  
 
 автор: Trianon   (26.04.2009 в 08:26)   письмо автору
 
   для: TetRiska   (26.04.2009 в 02:56)
 

цикл не нужен.

upd.
Неужели в таблице post нет поля user_id ?

  Ответить  
 
 автор: TetRiska   (26.04.2009 в 02:56)   письмо автору
 
   для: Trianon   (26.04.2009 в 02:37)
 

Повторюсь :)
напоследок моему занудству приведу всю логику, единственное прошу помочь с циклом!

$row = $db->super_query("SELECT id, autor FROM " . PREFIX . "_post where id = '$id'");

        if ($row['id']) {
           $comm = $db->super_query("SELECT autor, COUNT(*) as count FROM " . PREFIX . "_comments where post_id=".$row['id']." GROUP BY autor");
           $db->query("DELETE FROM " . PREFIX . "_post WHERE id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_comments WHERE post_id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_poll WHERE news_id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_poll_log WHERE news_id='{$row['id']}'");
           $db->query("DELETE FROM " . PREFIX . "_tags WHERE news_id = '{$row['id']}'");
           $db->query("UPDATE " . USERPREFIX . "_users set news_num=news_num-1 where name='{$row['autor']}'"); //обновляю счетчик кол. постов у того кто постил эту новость
     for(){
           $db->query("UPDATE " . USERPREFIX . "_users set comm_num=comm_num-"подставить из массива" where name="подставить из массива""); //обновляю счетчики кол. комментариев у всех кто постил в этой новости
            } 

Массив получил в эту переменную $comm

autor   count
admin     1
pupkin    1 

  Ответить  

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования