Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Niewidzialne mnożenie
Gigante
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 29.09.2006
Skąd: Oława

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


  1. SELECT nazwa, SUM(wejscia) AS wejsc FROM gry,statystyki,tagi WHERE statystyki.data>=".(time()-(60*60*24*2))." AND gry.id=tagi.id AND gry.id=statystyki.id AND tagi.id NOT IN (SELECT DISTINCT id FROM tagi WHERE url='play-by-forum' OR url='pbf' OR url='mikronacja' OR url='mikronacje') GROUP BY statystyki.id HAVING wejsc>=5 ORDER BY wejsc DESC
  2.  

zwraca unikalne nazwy i sume wejsc - to działa poprawnie (IMG:style_emoticons/default/winksmiley.jpg)

ale przy okazji robi mnożenie zwracanej sumy o ilosc tagow z tabeli TAGI efekt nieporzadany, ma nie mnozyc (IMG:style_emoticons/default/smile.gif) chyba ze przez 1

np: suma wejsc z 2 ostatnich dni wynosi: 5
wpis posiada 4 tagi (zapisywane sa w osobnych wierszach)
wyswietlany wynik to 20 (5 x 4)

negacje probowalem robic poprzez != i <> ale nadal wyswietlalo wpisy zawierajacy dany tag np:
  1. SELECT nazwa,SUM(wejscia) AS wejsc FROM gry,statystyki,tagi WHERE statystyki.data>=".(time()-(60*60*24*7))." AND tagi.url!='mikronacja' AND gry.id=tagi.id AND gry.id=statystyki.id GROUP BY statystyki.id HAVING wejsc>=1 ORDER BY wejsc DESC
  2.  


Ten post edytował Gigante 10.11.2009, 11:31:47
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




Tak masz na własne życzenie poprzez iloczyn kartezjański. Robisz
FROM gry,statystyki,tagi
A w wyniku:
SUM(wejscia) AS wejsc
Jako że masz z powodu takiego łączenia we FROM niezły bajzel, to zwraca Ci masę dubli pasujących do warunku. A że potem robisz sumowanie tego to masz efekt o jakim wspominasz. Zrób sensowniejsze łączenie tabel to od razu Ci się wszystko zredukuje w wynikach.

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


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




albo za pomocą aliasów do tabel wybieraj kolumny tylko z tych tabel które Cię interesują.
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: 23.08.2025 - 15:52