kill15
13.04.2011, 20:58:34
Witam, mam dość banalne pytanie.
id 1 - 1,1
id 2 - 3,1
id 3 - 1,3
id 4 - 6,1
id 5 - 1,3
id 6 - 1,6
itd
pokazałem tutaj pare id w bazie danych i chciałbym żeby przy tworzeniu nowego id automatycznie było przyporzadkowane położenie(x, y) - nie może sie powtarzać.
no i żeby to sie układało tak jak to pokazałem. Myślę że oczywistością jest fakt że nie mogę automatycznie zrobić tam ileś id, one będą się musiały tworzyć na bieżąco.
IceManSpy
13.04.2011, 21:09:03
A jako co masz zapisane to położenie? Jako znaki (char / varchar)? Jeśli tak, to nałóż na kolumnę atrybut unikalny (unique). To spowoduje, że będziesz mieć unikalność.
Co do losowania. Jeśli są to znaki to zrób tak:
zmienna1 = losuj liczbę w jakimś zakresie
zmienna2 = losuj liczbę w jakimś zakresie
polaczenie_zm = zmienna1 + , + zmienna2
Zapisz do bazy polaczenie_zm.
Nie napisałeś co to jest za położenie, więc losuje tutaj jakiekolwiek liczby.
kill15
13.04.2011, 21:23:56
mam kolumny id, osx i osy(mają one int wszystkie i oczywiście AUTO_INCREMENT) - to jest akurat mało ważne.
czyli muszę Rand losować liczbę

to się znowu by wiązało z warunkami dodatkowymi żeby za daleko od siebie liczby nie były.
no i musiał bym zrobić tak jak mówisz łączyć to w varchar a nie int.
Czy nie ma jakiegoś sposobu w którym nie musiałbym robić tych warunków /?
IceManSpy
13.04.2011, 21:31:18
osx i osy też jest autoincrement?Jak tak, no to chyba źle to jest zrobione. ID może być autoincrement.
No niestety musisz jakoś losować liczby. Możesz zostawić inty, ale wtedy losujesz dla X i dla Y, a potem sprawdzasz, czy nie ma rekordu o takiej parze. Jak nie, to wrzucasz do bazy, jak jest to losujesz od nowa.
kill15
13.04.2011, 21:32:59
nie. tam miałem napisać że id jest oczywiście AUTO_INCREMENT
IceManSpy
13.04.2011, 21:36:08
To podałem CI możliwości, jak to zrobić. Co wybierzesz i jak to zoptymalizujesz, to już Twoja decyzja
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.