Cześć.
Mam taki problem. Mam w tabeli index pomocniczy służący do sortowania według niego wierszy znajdujących się w bazie. Index ten chcę również w niektórych miejscach wyświetlać więc powinien się zaczynać od 1 i zwiększać się o 1.
Problem jest taki, że czasami chcę modyfikować dane w tabeli i zmieniać ten index -> np. był 5 teraz będzie 10.
No i pojawia się problem, bo brakuje index-u o numerze 5.
Dlatego też chcę, aby w bazie danych przy zmianie czegokolwiek, na wszelki wypadek index-y ustawiały się od najmniejszego do największego i zwiększały się o 1.
Problem jest z odpowiednim zapytaniem - jak ono powinno wyglądać?
Chciałem zrobić coś w tym stylu:
Dla pierwszego indeksu
$query = "
UPDATE `main menu` SET `help index` = 0 WHERE `help index` = MIN(`help index`)
";
Niestety pojawi się błąd
A następnie w pętli - dla reszty:
for($i=1; i<$count_rows;$i++)
{
$query = "
SELECT MIN(`help index`) FROM `main menu` WHERE `help index` > $i
";
$result = mysql_query($query) or die (mysql_error());
$row = mysql_fetch_assoc($result);
if($row['help index']>$i)
{
$query = "
UPDATE `main menu` SET `help index` = $i WHERE `help index` = ".$row['help index'].")
";
mysql_query($query) or die (mysql_error());
}
}
}
Czy może ktoś mi pomóc z błędem wynikającym z pierwszego zapytania, który brzmi: Invalid use of group function
oraz ocenić dalszą część kodu - ewentualnie zaproponować bardziej optymalne/czytelne rozwiązanie? :)
Z góry dziękuję za pomoc!