![]() |
![]() ![]() |
![]() |
![]()
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 ~
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 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 |
|
|
![]()
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 |
|
|
![]()
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ść ?
|
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 02:03 |