Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] zapytanie insert - wartosc innego pola taka jak pola auto_increment
Forum PHP.pl > Forum > Przedszkole
Hunterro
przykladowo mam tabele ktora ma nastepujace kolumny:
id
sort
nazwa

Gdzie pole id ma ustawione auto_increment

robie sobie zapytanie
INSERT INTO tabela VALUES('', '', 'costam');

Pytanie brzmi:
Jak zrobic zeby do kolumny sort wcisnieta zostala taka sama wartosc jak do id gdzie jest auto_increment.
Lombi
Chyba skorzystał bym z funkcji MAX() do sprawdzenia numeru id w tabeli i wstawil do sort wartość o jeden większą.
acztery
zaintersuj się mysql_insert_id
Hunterro
niby to by zadzialalo ale jesli rekord o ostatnim id zostal usuniety a wczesniej w wyniku sortowania inny rekord uzuskal taka wartosc sort?

co do mysql_insert_id.
w tym momencie tak to zrobilem ale wtedy musze wykonywac dwa zapytania a chcialbym zrobic to w jednym tongue.gif
Lombi
Nie wiedziałem że bedziesz to potem jeszcze obrabiał smile.gif Więc zrób jak radzi acztery. Tak czy tak zapytanie i linijka kody więcej smile.gif
acztery
po ci się bawić tak z jakims max??

a co jak 2 osoby w tym samym czacie to zrobią to co . Do tego jest jedna funkcja to co napisałem powinno załatwić sprawę albo nadaj polu gdzie bedziesz dawał ta wartosc typu auto_increment. smile.gif
nevt
a jaki jest w ogóle sens przepisywania wartości id do pola sort questionmark.gif nie możesz sobie sortować po id questionmark.gif po co ci w jednej tabeli dwie kolumny przechowujące identyczne dane questionmark.gif
Hunterro
dlatemu ze nazwa pliku powiazanego z rekordem ma w sobie jego id.
wiec przy sortowaniu niechce zmieniac nazwy pliku dlatego oddzielna wartosc do sortowania.
pozatym jesli np zapodalbym gdzies albo komus link np do jakiegos artykulu, a pozniej posortowalbym sobie inaczej to link tez nie dzialalby prawidlowo.
a sama wartosc sort po dodaniu rekordu chce zeby miala wartosc taka jak id zeby domyslnie pojawial sie on na koncu listy.
Hunterro
Taki sposob juz byl podawany ale on nie zawsze bedzie prawidlowo dzialal.
Wyslanie na przykladzie. mamy nastepujace rekordy w bazie:

id sort
1 1
2 2

Zmieniamy kolejnosc wyswietlania przez zmiane wartosci w kolumnie sort

id sort
1 2
2 1

Okazuje sie ze jednak rekord o id 2 jest zbedny wiec go wywalamy

id sort
1 2

Dodajemy nowy rekord i robiac to w wlasnie w sposob podany z tego linka otrzymujemy w bazie:

id sort
1 2
3 2

I sortowanie spartolone tongue.gif

EDIT:

Ale w sumie wlasnie sobie pomyslalem ze jakby przy wstawianiu nowego rekordu wstawic w sort MAX(sort) +1 to by bylo dobrze tongue.gif
Bo niewiem czemu uparlem sie na to zeby to byla wartosc taka jak id jesli chodzi tylko o to zeby nowo dodany rekord wyswietlal sie na liscie jako ostatni ;]
erix
Cytat
Ale w sumie wlasnie sobie pomyslalem ze jakby przy wstawianiu nowego rekordu wstawic w sort MAX(sort) +1 to by bylo dobrze

Przecież napisałem w tamtym poście, co zrobić, aby było ok. tongue.gif

Cytat
Taki sposob juz byl podawany ale on nie zawsze bedzie prawidlowo dzialal.

Owszem, w przypadku kilku jednoczesnych zapisów tak. Ale istnieje jeszcze coś takiego jak LOCK TABLES i transakcje. winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.