1

Тема: Запрос MySQL добавить счёт, типа x=x+1;

sad  Далее привожу запрос, требуется сделать инкремент(прибавление на единицу), для каждой последующей линии таблицы:

UPDATE `joomla_categories` SET `ordering` = (как сделать инкремент?!) WHERE `ordering` > '0'.


hmm СПАСИТЕ ПОМОГИТЕ.

2

Re: Запрос MySQL добавить счёт, типа x=x+1;

Ответ в вопросе. smile

UPDATE `joomla_categories` SET `ordering` = `ordering` + 1 WHERE `ordering` > '0';

3 (изменено: Vitaly, 2012-08-04 14:46:50)

Re: Запрос MySQL добавить счёт, типа x=x+1;

Hanut сказал:

Ответ в вопросе. smile

UPDATE `joomla_categories` SET `ordering` = `ordering` + 1 WHERE `ordering` > '0';

мне нужно чтобы был инкремент 1, 2, 3, 4, 5, 6, 7 итд.


.

4

Re: Запрос MySQL добавить счёт, типа x=x+1;

-- Обнуляем все значения в поле ordering.
UPDATE `joomla_categories` SET `ordering` = 0;

-- Проставляем новые значения выбирая максимальное из подзапроса.
-- Если надо, то можно добавить сортировку по какому-нибудь полю с помощью ORDER BY в конце.
UPDATE `joomla_categories` SET `ordering` = (SELECT MAX(`ordering`) + 1 FROM `joomla_categories`);

5

Re: Запрос MySQL добавить счёт, типа x=x+1;

Hanut сказал:
--
-- Проставляем новые значения выбирая максимальное из подзапроса.
-- Если надо, то можно добавить сортировку по какому-нибудь полю с помощью ORDER BY в конце.
UPDATE `joomla_categories` SET `ordering` = (SELECT MAX(`ordering`) + 1 FROM `joomla_categories`);

Идея классная, но система отвечает:
#1093 - You can't specify target table 'joomla_categories' for update in FROM clause

sad

СПАСИТЕ - ПОМОГИТЕ  hmm
.

6

Re: Запрос MySQL добавить счёт, типа x=x+1;

Пропишите данные для соединения в строке:
mysql_connect("localhost", "mysql_user", "mysql_password");
И запустите скрипт. Только проследите наличие в таблице joomla_categories поля id являющегося первичным ключом (оно может иметь другое название, тогда поменяйте его в запросе).

<?php

$conn = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}

if (!mysql_select_db("mydbname")) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}

$sql = "SELECT `id` FROM `joomla_categories`";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

$i = 1;

while ($row = mysql_fetch_assoc($result)) {
    $sql_update = 'UPDATE `joomla_categories` SET `ordering` = ' . $i++ . ' WHERE `id` = ' . $row['id'];
    mysql_query($sql_update);
}

mysql_free_result($result);

?>