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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Вложенный запрос UPDATE
 
 автор: tAleks   (02.07.2006 в 19:01)   письмо автору
 
 

Есть вот такой запрос, не работающий.

$query_insert_order = "INSERT INTO orders SET
        number_order = (SELECT @number := MAX(number_order) FROM orders WHERE id_ds_user =".$_SESSION['ds_data']['id_user'].") + 1,
        id_ds_user = ".$_SESSION['ds_data']['id_user'].",
        id_user = ".$_SESSION['user_data']['id_user'].";
        SELECT @number;";


Задача:
Нужно добавить запись в таблицу. Значение number_order = максимальному значению из этой же таблицы +1.

И в конце нужно вернуть number_order

Как сделать так, чтобы это все работало?

   
 
 автор: cheops   (02.07.2006 в 23:52)   письмо автору
 
   для: tAleks   (02.07.2006 в 19:01)
 

Хм... а зачем переменную используете? Просто добавляйте значение вложенного запроса
<?php
$query_insert_order 
"INSERT INTO orders SET 
        number_order = (SELECT MAX(number_order) FROM orders WHERE id_ds_user ="
.$_SESSION['ds_data']['id_user'].") + 1, 
        id_ds_user = "
.$_SESSION['ds_data']['id_user'].", 
        id_user = "
.$_SESSION['user_data']['id_user'];
?>

   
 
 автор: tAleks   (03.07.2006 в 06:52)   письмо автору
 
   для: cheops   (02.07.2006 в 23:52)
 

А как после этого узнать MAX(number_order) FROM orders? Дополнительным запросом?

   
 
 автор: tAleks   (03.07.2006 в 08:33)   письмо автору
 
   для: cheops   (02.07.2006 в 23:52)
 


<?php
$query_insert_order 
"
        INSERT INTO orders SET    number_order = (SELECT MAX(number_order) FROM orders WHERE id_ds_user ="
.$_SESSION['ds_data']['id_user'].") + 1,
        id_ds_user = "
.$_SESSION['ds_data']['id_user'].",
?>        id_user = "
.$_SESSION['user_data']['id_user'];


Выдает ошибку:
1093: You can't specify target table 'orders' for update in FROM clause

   
 
 автор: cheops   (03.07.2006 в 20:05)   письмо автору
 
   для: tAleks   (03.07.2006 в 08:33)
 

Хм... попробуйте заключить имя таблицы orders в обратные кавычки... Погодите, вы просто хотите присваивать полю максимальное значение + 1? Может тогда лучше воспользоваться специально созданным для этого случая механизмом AUTO_INCREMENT?

   
Rambler's Top100
вверх

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