Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dwa pola AUTO_INCREMENT, jak ?
jastu
post
Post #1





Grupa: Zarejestrowani
Postów: 382
Pomógł: 0
Dołączył: 29.11.2005
Skąd: :jestem();

Ostrzeżenie: (0%)
-----


Napisałem sobie coś i najprościej byłoby dać dwa pola auto_inrement, ale się nie da.
Wtedy pierwsze pole było by PKi id obiektu a wg drugiego była by sortowana lista.
Właśnie chodzi o sortowanie... kolejny wstawiany wiersz będzie umieszczany na końcu i będzie miał kolumnę SORT o największym numerze oraz ID ostatniego rekordu +1 ... jak to można zrobić inaczej ?


--------------------
Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Rude Dude
post
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 23.07.2007

Ostrzeżenie: (0%)
-----


Zrób tabelę z relacjami i tam wstaw idy które będziesz wykorzystywał do sortowania.
Go to the top of the page
+Quote Post
kris2
post
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 15.08.2007

Ostrzeżenie: (0%)
-----


dlaczego nie możesz sortować po primary key?
a skoro nie możesz to na penwo dwa pola autoinkrementacyjne tego nie zalatwią.
Go to the top of the page
+Quote Post
jastu
post
Post #4





Grupa: Zarejestrowani
Postów: 382
Pomógł: 0
Dołączył: 29.11.2005
Skąd: :jestem();

Ostrzeżenie: (0%)
-----


Pierwsze pole AI odpowiada za nadawanie objektowi jego ID (nie mogę wartości tego pola zmieniać), a drugie AI pole odpowiada za kolejność wyświetlania - wartość tego pola może być zmieniana.

Obecnie działa to tak :
Robię insert, pobieram last_insert_id() i robię update table set AI_2 = last_insert_id() where AI_1 = last_insert_id();


--------------------
Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
Go to the top of the page
+Quote Post
kris2
post
Post #5





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 15.08.2007

Ostrzeżenie: (0%)
-----


http://dev.mysql.com/doc/maxdb/en/6d/117c2...261/content.htm
myśle że tutaj znajdziesz rozwiazanie
Go to the top of the page
+Quote Post
jastu
post
Post #6





Grupa: Zarejestrowani
Postów: 382
Pomógł: 0
Dołączył: 29.11.2005
Skąd: :jestem();

Ostrzeżenie: (0%)
-----


Niezłe....szkoda że w mysqlu tego nie ma
http://dev.mysql.com/doc/maxdb/en/e6/0e964...b0/frameset.htm
....hostingu też znaleźć nie mogę laugh.gif haha.gif

Zostaje wyzwalacz lub update po insercie..., ale dzięki za zaangażowanie. Pzdr


--------------------
Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
Go to the top of the page
+Quote Post
kris2
post
Post #7





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 15.08.2007

Ostrzeżenie: (0%)
-----


używaj Postgresa, tam jest prawie wszystko smile.gif
Go to the top of the page
+Quote Post
osiris
post
Post #8





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

Ostrzeżenie: (0%)
-----


Hmm, jesli dobrze Cie zrozumialem to mozna przy dodawaniu rekordu dla pola wg ktorego ma odbywac sie sortowanie wstawiac wartosc maks +1 np.:
  1. INSERT INTO tab (id, kol1, kol2, kol_sort) VALUES(0, 'gaga', 'tratatata', (SELECT MAX(kol_sort)+1 FROM tab))
Go to the top of the page
+Quote Post
jastu
post
Post #9





Grupa: Zarejestrowani
Postów: 382
Pomógł: 0
Dołączył: 29.11.2005
Skąd: :jestem();

Ostrzeżenie: (0%)
-----


Niestety to w MySql nie działa
Kod
MySQL Database Error: You can't specify target table 'ft_f_groups' for update in FROM clause


--------------------
Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
Go to the top of the page
+Quote Post
heaven
post
Post #10





Grupa: Nieautoryzowani
Postów: 92
Pomógł: 15
Dołączył: 21.10.2006

Ostrzeżenie: (0%)
-----


Mi taki kod dziala na MySQL
  1. INSERT INTO tree (child_id, parent_id, depth) VALUES (11,11, (SELECT MAX(t.depth)+1 FROM tree t))

musisz tylko zrobic aliasa dla tego drugiego zaputania u mnie "t"
Go to the top of the page
+Quote Post
wlamywacz
post
Post #11





Grupa: Zarejestrowani
Postów: 535
Pomógł: 27
Dołączył: 3.05.2005

Ostrzeżenie: (20%)
X----


Podzapytania w mysql są jeśli dobrze pamiętam od wersji 4.1.11
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:56