Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]zmiana pozycji w bazie i aktualizacja pozostałych PDO, optymalizacja bazy
marcopolo1
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 23.11.2012

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


Witam,
Postanowiłem, że wspomnę o tym tutaj

mam przykładową bazę danych:


Zrzut danych tabeli tabela

id name numer_show other_info
1 pierwszy 1
2 pierwszy 4
3 pierwszy 2
4 pierwszy 6
5 pierwszy 3
6 pierwszy 7
7 pierwszy 11
8 pierwszy 9
9 pierwszy 10
10 pierwszy 5
11 pierwszy 8

powiedzmy, że jest to menu wyświetlane w kolejności "numer_show".
i teraz problem:
jeżeli chcę przenieść pozycję 10 z numer_show by była na 5 miejscu, to:

1.muszę ID:9 zapisać w zmiennej zapasowej, by ją na końcu edytować,
2. każdy element, który był pod 10 z numer_show, a był większy bądź równy zmienianej muszę zwiększyć o 1
-no i z tym właśnie mam problem - mogę dać do array wszystkie id, które były w tym przedziale, a potem zwiększać każdego wartość o 1 w numer_show.. - czy istnieje zapytanie SQL, które może to zrobić za jednym zamachem( a jeżeli to nie problem to dodatkowo sprawdzi, czy wartość jest minimalna czy maksymalna - wtedy nie edytuje )? oraz wyjaśni mi co się kiedy dzieje ?biggrin.gif

3.zamienić numer_show w id9 z 10 na 5


Jeżeli ktoś może to proszę o linka do jakieś książki odnośnie bardziej zaawansowanych zapytań sql..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




NIe ogarniam co ty chcesz zrobic... jak chcesz zrobic sortowanie po numer_show to robisz:
...order by numer_show asc
i po sprawie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
marcopolo1
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 23.11.2012

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


zmieniam w id9 numer_show z 10 na 5
z pozostałych id, które miały przedział numer_show od 5 do 10 zwiększam każdy o 1 .. - nie wiem jak to logiczniej mam napisać - chcę to zrobić jednym zapytaniem i właśnie tego zapytania szukam


Ten post edytował marcopolo1 29.01.2015, 13:00:14
Go to the top of the page
+Quote Post
Kishin
post
Post #4





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


masz już cokolwiek napisane?
Go to the top of the page
+Quote Post
marcopolo1
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 23.11.2012

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


hmmm inaczej - jak zmienić kilka rekordów na raz - zwiększyć 5 kolejnych po sobie rekordów o 1 ?
np.

numer_show => numer_show
2 =>3
3 =>4
4 =>5
5 =>6
6 =>7

i jak to zrobić jednym zapytaniem ?
Go to the top of the page
+Quote Post
Kishin
post
Post #6





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


  1. UPDATE TABLE SET numer_show =numer_show +1
  2. WHERE numer_show BETWEEN 2 AND 6
  3.  


cos takiego?

Ten post edytował Kishin 29.01.2015, 13:52:28
Go to the top of the page
+Quote Post
marcopolo1
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 23.11.2012

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


dokładnie....
Piwo przy okazji haha.gif


Ten post edytował marcopolo1 29.01.2015, 14:05:49
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 - 07:37