Помогите пожалуйста сформировать запрос в бд

Главные вкладки

Аватар пользователя g2100636 g2100636 9 апреля 2015 в 19:59

есть таблица:

CREATE TABLE IF NOT EXISTS `test` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `data` VARCHAR(255) DEFAULT NULL,
  `int` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;

Помогите пожалуйста сформировать вот такой запрос:

UPDATE `test` SET `data` = '0' WHERE `int`-11 < 0

Никак не доходит как же правильно составить..
вот как пробывал:

<?php
db_query
("UPDATE {test} SET data = :data WHERE int - :num <0", array(':data' => 0':num' => 11));

db_query("UPDATE {test} SET data = 0 WHERE int - 11 <0");

$q=db_update('test');
$q->fields(array('data' => 0));
$q->where('int-:num < 0', array(':num' => 11));
$q->execute();
?>

Комментарии

Аватар пользователя g2100636 g2100636 9 апреля 2015 в 21:17

не не не..
мне не нужно выбирать то что меньше 11.
мне нужно от числа находящегося в ячейке int отнять 11 и это значение должно быть меньше нуля..

Аватар пользователя g2100636 g2100636 9 апреля 2015 в 22:53

А.
в данном случае правда что так оно получается..
значит я не правильно вопрос задал.

в место нуля может быть любое число. например.

UPDATE `test` SET `data` = '0' WHERE `int`-11 < 12

Более конкретно задача следующая:
Нужно обновить ячейку data у всех пользователей, у которых прошло больше месяца с момента регистрации.
Время записано в timestamp. Например время создания профиля - 1428168483
тогда запрос нужно составить таким образом чтобы от текущего времени отнять 1428168483 и получится число. если это число больше 2629743 (секунд в месяце), то обновляем ячейку data.

причем такое обновление нужно делать постоянно.
каждый раз обновлять поле у пользователей у которых прошел месяц с предыдущего обновления.
т.е. нужно будет создать еще поле, в котором записывать дату предыдущего обновления, и сверяться с ней.

Аватар пользователя g2100636 g2100636 10 апреля 2015 в 8:22

ну а к примеру такой запрос в через drupal db api получится сформировать?

SELECT * FROM `test` WHERE  `test`.`int` -`test`.`int2` = 2;

или

SELECT * FROM `test` WHERE  `int` - `int2` = `int3`