ID | LastName | FirstName | Приказал
1 | Смит | Джон |
2 | Смит | Ларри |
3 | Джонс | Фред |
4 | Джонсон | Тодд |
Желаемый результат: обновите упорядоченное поле с добавочными значениями в алфавитном порядке.
1 | Смит | Джон | 3
2 | Смит | Ларри | 4
3 | Джонс | Фред | 2
4 | Джонсон | Тодд | 1
$result = mysql_query("SELECT * FROM MyDatabase ORDER by
LastName,FirstName");
$N=0;
while ($row = mysql_fetch_array( $result ))
{
mysql_query("
UPDATE MyDatabase
SET Ordered = $N + 1
WHERE ...");
}
Я знаю, что мне нужно WHERE, но я не могу сделать никаких предложений WHERE. Я всегда получаю все одинаковые числа в поле "Заказ". Что сделало бы эту работу задуманной?
Ну, я понял это, чтобы заставить его работать. Просто нужно получить строку, а затем сравнить ее с полем ID следующим образом:
$result = mysql_query("SELECT * FROM MyDatabase ORDER by LastName, FirstName");
$N=1;
while ($row = mysql_fetch_array( $result ))
{
$updateid = $row['ID'];
mysql_query("
UPDATE MyDatabase
SET Ordered = $N
WHERE ID='$updateid'");
$N++;
}
Похоже, вам сначала нужно получить общее количество всех строк в результирующем наборе (поскольку вы храните от максимума до минимума, вам нужно знать максимум). Затем просто уменьшите это значение во время цикла UPDATE/