как можно записать одной строкой два выражения:
$table = 'test';
$query = "UPDATE $table SET `status` = CASE WHEN CURDATE()<DATE(`timeLeft`) THEN 1 ELSE 0 END"; // поле `timeLeft` типа timestamp
и
$table = 'test';
$query = "SELECT * FROM $table";
чтобы потом применить один раз:
$results = mysql_query($query);
спасибо
Спустя 6 минут, 1 секунда (5.09.2011 - 21:33) Игорь_Vasinsky написал(а):
Да вроде нельзя.
Спустя 16 минут, 28 секунд (5.09.2011 - 21:50) skolozhabskiy написал(а):
а все же как можно все это записать лаконичнее?
сейчас так:
сейчас так:
$table = 'test';
$query = "UPDATE $table SET `status` = CASE WHEN CURDATE()<DATE(`timeLeft`) THEN 1 ELSE 0 END"; // поле `timeLeft` типа timestamp
$results = mysql_query($query);
$query = "SELECT * FROM $table";
$results = mysql_query($query);
Спустя 5 минут, 25 секунд (5.09.2011 - 21:55) Игорь_Vasinsky написал(а):
Я и забыл про условия в SQL :(
помоему - оптимально, только конкатенации нету.
помоему - оптимально, только конкатенации нету.
'" . $variable. "'
Спустя 5 минут, 40 секунд (5.09.2011 - 22:01) skolozhabskiy написал(а):
не совсем понял где именно "конкатенации нету"?
обе записи работают без ошибок!
обе записи работают без ошибок!
Спустя 10 минут, 36 секунд (5.09.2011 - 22:11) sergeiss написал(а):
Цитата (skolozhabskiy @ 5.09.2011 - 22:27) |
как можно записать одной строкой два выражения:... |
Чтобы это сделать, надо использовать PostgreSQL

Спустя 6 минут, 11 секунд (5.09.2011 - 22:17) skolozhabskiy написал(а):
я поясню задачу: необходимо всеже используя mysql перед считыванием всех полей SELECT от таблицы проверить совпадение текущей даты с датой введенной в поле timestamp? если поле с timestamp больше по дате текущей, то в поле status записть 1 если равно или меньше то 0. далее обычным способом while ($row = mysql_fetch_assoc($results)) {} считываются любые (и неапрейченные и апгрейченные поля) значения полей таблицы. может все это можно записать одной трокой иначе?
спасибо за ответ.
спасибо за ответ.
Спустя 1 минута, 46 секунд (5.09.2011 - 22:19) Игорь_Vasinsky написал(а):
Цитата |
не совсем понял где именно "конкатенации нету"? |
я про оформление SQL запроса. в подписи несть ссылка.
Спустя 59 минут, 7 секунд (5.09.2011 - 23:18) skolozhabskiy написал(а):
спасибо но я ничго кроме рекламы на сайте в подписи не нашел.
может профессионалы все же подскажут как решить данную проблему более лаконично: необходимо, используя mysql, перед считыванием всех полей SELECT от таблицы проверить совпадение текущей даты с датой введенной в поле timestamp? если поле с timestamp больше по дате текущей, то в поле status записать 1, если равно или меньше то 0. далее обычным способом while ($row = mysql_fetch_assoc($results)) {} считываются любые поля (значения полей) таблицы.
спасибо за ответ
может профессионалы все же подскажут как решить данную проблему более лаконично: необходимо, используя mysql, перед считыванием всех полей SELECT от таблицы проверить совпадение текущей даты с датой введенной в поле timestamp? если поле с timestamp больше по дате текущей, то в поле status записать 1, если равно или меньше то 0. далее обычным способом while ($row = mysql_fetch_assoc($results)) {} считываются любые поля (значения полей) таблицы.
спасибо за ответ
Спустя 56 минут, 52 секунды (6.09.2011 - 00:15) Игорь_Vasinsky написал(а):
Цитата |
спасибо но я ничго кроме рекламы на сайте в подписи не нашел. |






ну не нашёл, значит не искал. (в моей подписи - про оформление SQL запрсов) удач. не профи тады не лезут

Спустя 1 час, 5 минут (6.09.2011 - 01:20) Guest написал(а):
спасибо, я не на ту ссылку обратил внимание, но у меня все правильно прописано. вопрос остается прежним. спасибо за любую идею.
Спустя 7 часов, 34 минуты, 1 секунда (6.09.2011 - 08:54) Evilsoul написал(а):
да нет такого в mysql! и вообще для каких это целей "одной строкой"?
Спустя 19 минут, 48 секунд (6.09.2011 - 09:14) Игорь_Vasinsky написал(а):
чтобы сократить кол-во запросов (в 2 раза видимо).
Спустя 1 час, 9 минут, 27 секунд (6.09.2011 - 10:23) Evilsoul написал(а):

ты можешь продублировать эти строки раз 20 и запустить скрипт, и я с уверенностью скажу что разницу ты не заметишь, единственное что покажет так это счетчик и то в сотых долях секунд
Спустя 22 минуты, 40 секунд (6.09.2011 - 10:46) sergeiss написал(а):
Цитата (Evilsoul @ 6.09.2011 - 09:54) |
и вообще для каких это целей "одной строкой"? |
Зачем это нужно ТС - не знаю.
Но если делать так, как я написал (в PostgreSQL), то смысл есть. Я могу получить четкий список строк таблицы, которых коснулись изменения, плюс увидеть всё в новом виде. В ряде случаев это может быть очень полезно. Да и количество измененных строк сразу же видно. Не нужно, в отличие от MYSQL, делать дополнительные запросы о количестве.
Спустя 10 часов, 13 минут, 41 секунда (6.09.2011 - 21:00) Evilsoul написал(а):
sergeiss
Да, но как ты подчеркнул и говорил выше, это возможно, но в PostgreSQL.
Да это удобнее, никто не спорит, но не в данном случаи
Да, но как ты подчеркнул и говорил выше, это возможно, но в PostgreSQL.
Да это удобнее, никто не спорит, но не в данном случаи
