phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
Osoby, które udzielały się na forum lub w sb w roku 2012
Autor Wiadomość
Dartam


Pomógł: 2 razy
Posty: 185
Wysłany: 13-01-2013, 13:45   Osoby, które udzielały się na forum lub w sb w roku 2012

Witam,
czy mógłby mi ktoś powiedzieć jak napisać kod SQL, który wypisywałby nicki osób, które chodź raz napisały wiadomość na forum bądź na ShoutBoxie w roku 2012? :mrgreen:
Ostatnio zmieniony przez Majkelo 13-01-2013, 20:51, w całości zmieniany 1 raz  
 
     
Gadatliwa Kasia 

   
Majkelo



Pomógł: 1283 razy
Posty: 3081
Wysłany: 13-01-2013, 20:42   

Kod:
SELECT u.user_id, u.username, p.post_time, s.sb_user_id, p.poster_id, s.timestamp
FROM `phpbb_users` u
LEFT JOIN `phpbb_posts` p ON u.user_id = p.poster_id
LEFT JOIN `phpbb_shoutbox` s ON s.sb_user_id = u.user_id
WHERE p.post_time >= 1325372400
AND p.post_time <= 1356994800
OR s.timestamp >= 1325372400
AND s.timestamp <= 1356994800
HAVING count( p.post_time ) >0
OR COUNT( s.sb_user_id ) >0;


Wydaje mi się, że nie zrobiłem nigdzie byka. Wykonaj w PHPMYADMIN i sprawdź czy dane rzeczywiście są właściwe.
 
     
Dartam


Pomógł: 2 razy
Posty: 185
Wysłany: 17-01-2013, 00:43   

Miałem problemy z wykonaniem tego zapytania, bo serwer się przeciążał, ale pokombinowałem i się udało. Tylko teraz jest problem innej natury. Zwrócony wynik jest jednak nieprawidłowy, tzn. zwróciło mi tylko jednego użytkownika i do tego, który nie wypowiedział się nigdzie w 2012 roku.

http://i.imgur.com/TMfSh.jpg - tak to wygląda
 
     
MQs

Pomógł: 172 razy
Posty: 480
Wysłany: 17-01-2013, 02:46   

Liczenie i brak grupowania zarzyna bazę. To zapytanie powinno działać:
Kod:
SELECT u.username, u.user_id, p.post_time, s.timestamp
FROM `phpbb_users` u
LEFT JOIN `phpbb_posts` p ON u.user_id = p.poster_id
LEFT JOIN `phpbb_shoutbox` s ON s.sb_user_id = u.user_id
WHERE (p.post_time >=1325372400 AND p.post_time <=1356994800)
OR (s.timestamp >=1325372400 AND s.timestamp <=1356994800)
AND u.user_id <> -1
GROUP BY u.username

Po SELECT możesz zostawić samo u.username jeśli chcesz tylko nicki - id jest do ewentualnie dalszych operacji, a dwie ostatnie dla sprawdzenia (nie mogą być NULL jednocześnie).
 
     
Dartam


Pomógł: 2 razy
Posty: 185
Wysłany: 17-01-2013, 14:07   

Działa gitnie, tylko jeden problem. Zwrócony wynik to 30 rekordów na 5 listach i jak kliknę na 2 listę, to zapytanie wykonuję się od nowa a to trwa 1745s czyli pół godziny. Co trzeba dopisać, żeby zwrócony wynik pokazywał się na jednej liście?

EDIT: Dobra już wiem "LIMIT 0 , 1000". Dzięki wielkie za pomoc!! :mrgreen:
 
     
MQs

Pomógł: 172 razy
Posty: 480
Wysłany: 17-01-2013, 14:30   

Coś strasznie długo ci to składa- u mnie to ok.11sek (też 1.12.6p4 podobna liczba userów/postów - wynik 1000 rekordów).
limit jest z phpMyAdmin - możesz dodać na końcu zapytania LIMIT 1000, ale u ciebie jest coś nie tak i nie kombinuj z takim zapytaniem na aktywnej bazie - zrób import bazy i sprawdź sobie na localhost. Nie wiem czy to kwestia wersji (może tabele się nie zgadzają), ale na localu i tej samej bazie + update na 1.12.7 zapytanie trwa 1 sek.
 
     
Majkelo



Pomógł: 1283 razy
Posty: 3081
Wysłany: 17-01-2013, 15:03   

Przy sporej bazie, wykonywanie zapytania będzie po prostu długie i mało przyjemne dla bazy bo sporo jest do przekopania informacji w tej bazie. Jeśli to ma być jakiś dodatek czy coś to pomyśl nad cachowaniem rekordów.
 
     
Gadatliwa Kasia 

   
Dartam


Pomógł: 2 razy
Posty: 185
Wysłany: 17-01-2013, 15:40   

Własnie sprawdzałem na localhoscie, bo na serwerze nie chciałem ruszać plików konfiguracyjnych. Raczej to wina tabeli shoutboxa, bo nie usuwam w ogóle wiadomości (dla archiwum) i jest ona dość spora, ma przeszło 220.000 rekordów. Ważne ze wynik jest prawidłowy i mam to co chciałem. Jeszcze raz wielkie dzięki. :)
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,06 sekundy. Zapytań do SQL: 13
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

serwis laptopów

phpbb

Design Cart - Tworzenie sklepu internetowego

iRonin.IT

• Zamów reklamę