Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] UPDATE
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


chcę zrobić w swoim skrypcie forum możliwość usuwania tematów. napotkałem problem, mianowicie liczba postów użytkownika jest przechowywana w users.posts i nie wiem jak zaktualizować ich wartość.

to co do tej pory zrobiłem
1. pobieranie danych o temacie.
2. pobieranie id oraz autora postów które są w tym temacie i stworzenie dwóch tablic : $posts_id oraz $_autors_id które zawierają te dane.
3. kasowanie wszystkich postów które są w danym temacie ~
  1. DELETE FROM... WHERE id IN ( implode( ',', $posts_id ) )


i następnie chciałbym zaktualizować ilośc postów dla każdego usera, w tabeli $autors_id są id autorów postów.
można zrobić zapytanie
  1. UPDATE ... SET posts=posts-1 WHERE id IN ( implode( ',', $autors_id ) )
ale co jeśli ktoś napisał więcej niż 1 post w temacie ? w jaki sposób to rozwiązać ?

Ten post edytował peter13135 15.12.2009, 19:50:05
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Group by user i count postów (IMG:style_emoticons/default/smile.gif)
EDIT: Jeśli nie rozumiesz. Zrób zapytanie, które tyczy danego tematu konkretnego i zrób grupowanie po id_autorów postów w nim zawartych i przy select jako jedno ze zwracanych pól zliczanie owych postów (IMG:style_emoticons/default/smile.gif) Możesz od razu dać order by ta liczba. Całość po odbiorze możesz dać do2 tablic. Te, gdzie liczba postów jest równa 1 poślesz zapytaniem jakie proponowałeś, ze zmniejszeniem o 1. Pozostali muszą dostać osobne zapytania, które zmniejszą liczbę postów zgodnie z dokładną wartością. Równie dobrze możesz dzielenie pominąć i wszystkim dać osobne update.

Ten post edytował thek 15.12.2009, 21:02:58
Go to the top of the page
+Quote Post
peter13135
post
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


czyli mam robić update inne dla userów którzy napisali 1 post, inny dla userów z 2 postami itd. ? w sumie nie widzę lepszego rozwiązania ale czy to nie wpłynie ujemnie na optymalność ?
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zaproponowałem to by zmniejszyć liczbę zapytań do bazy. Można przecież wysyłać każdemu osobno o ile zmniejszyć mu całkowitą liczbe postów. Ale można tablicę wynikową podzielić na "dodali jeden post" i "resztę". Ci z jednym postem byliby posłani jednym zapytaniem obejmującym id_userów w WHERE id IN, a nie osobnymi UPDATE dla każdego z nich.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.09.2025 - 02:03