[mysql] order order order

0

To mi daje ilosc komentarzy posegregowana od najwiekszego do najmniejszego:

SELECT user_id, user_name, user_posts, comment_name, COUNT(*) AS commentscount
		FROM fusion_comments, fusion_users
		WHERE user_id = comment_name
		GROUP BY comment_name
		ORDER BY commentscount DESC

ja chce jednak po tym zapytaniu wykonac dzialanie:

$liczba = (20 * user_posts) + commentscount;

i posegregowac rowniez od najwiekszego do najmniejszego zmienna $liczba.
ORDER BY z sql'a bedzie juz nieaktualny bo niechce segregowac po komentach tylko po wykonanym dzialaniu.

Jak to zrobic?

0
SELECT user_id, user_name, user_posts, comment_name, COUNT(*) AS commentscount, (20*user_posts) + commentscount as liczba
                FROM fusion_comments, fusion_users
                WHERE user_id = comment_name
                GROUP BY comment_name
                ORDER BY commentscount DESC, liczba desc

O takie cos Ci chodzi? Nie wiem za bardzo czym jest user_posts.

0

Unknown column 'commentscount' in 'field list'Unknown column 'commentscount' in 'field list'

on to traktuje jako kolumne a nie jako poprzednia liczba zliczona ;:P

user_postsz to ilosc postow usera juz zliczona

0

sory za post pod postem ale niemozna edytowac

tak przy okazji, da sie to na php zrobic tez? bo to zapytanie jest hardcorowe :P

0

Hardcorowe to jest zapytanie na 50 linijek ;)

Wyjasnij co jest czym (kolumny i tabele) to zobaczymy czy inne zapytanie mozna dac.

0

rekordy: user_id, user_name, user_posts, comment_name
tabele: fusion_comments, fusion_users

0

Boze... Tyle to ja widze w zapytaniu ;P Pytam co oznacza co, w szczegolnosci czym logicznie jest user_posts, bo reszty to sie mozna domyslic. I jaki efekt chcesz uzyskac - sortujesz uzytkownikow wedlug ilosci komentarzy i to drugie to co?

0

SELECT user_id, user_name, user_posts, comment_name, COUNT(*) AS commentscount
FROM fusion_comments, fusion_users
WHERE user_id = comment_name
GROUP BY comment_name
ORDER BY commentscount DESC

  1. comment_name to id usera ktory komentowal (NIE MA nigdzie zliczonej wiec w zapytaniu zliczam ile razy jaki user ma w tabeli swoje id czyli ile razy skomentowal news)
  2. user_posts to np. 10 .... liczba postow ktore napisal (gotowe, zliczone juz w bazie)
    a reszta to wiadomo user_name to nick usera :P ... id usera tez wiadomo
0

No to tak moze pojdzie:

SELECT user_id, user_name, user_posts, comment_name, COUNT(*) AS commentscount, (20*user_posts) + COUNT(*) AS liczba
                FROM fusion_comments, fusion_users
                WHERE user_id = comment_name
                GROUP BY comment_name
                ORDER BY commentscount DESC, liczba DESC

PS. Do laczenia tabel uzylbym joina.

0

Ok teraz jest dobrze tylko musialem wyciachac

z tego: ORDER BY commentscount DESC, liczba DESC
to: commentscount DESC

Bo potrzebuje posortowac po tym dzialaniu a nie samych komentarzy tez :) i poszlo jak zlotko.

Dzieki wielkie za helpa, a z tym JOIN'em, to jest zasobozerne, ale jakbys tego uzyl w tym przypadku?

0

Join jest zasobozerny? Jak optymalizator jest sprytny to Twoje zapytanie zamieni na joina wlasnie po to, zeby nie bylo zasobozerne. A jak nie zamieni to tylko gorzej. Mozesz tak

... from fusion_comments c inner join fusion_users u on u.user_id = c.comment_name group by ...
0

ok zaraz sprobuje, a tak w ogole co to za optymalizator, dasz namiary? bo zajmuje sie wydajnoscia dosc dlugo i bym to chetnie stestowal ze swoimi zapytaniami w innym projekcie

0

Optymalizator w silniku bazy danych - czyli taki modul w bazie, ktory sprawdza czy dane zapytanie moze byc ulepszone. Nie wiem jaki jest w mysql, wiec tutaj wiele nie pomoge. Co do tej wydajnosci, co sie nia dlugo zajmujesz to nie wyglada na to po tym zapytaniu. Mozesz sobie sprawdzic jak wyglada wykonanie zapytanie poprzez EXPLAIN.

0

Hehe potrafie zoptymalizowac phpbb o jakies 2500% bardziej wydajne niz orginal... prawie kazda strone w php o srednio 100-300% i nie jest to zabawa z zapytaniami do bazy w wiekszosci. Niemowie ile sie na tym zaoszczedza kosztow kolejnych serwerow. No ale mniejsza o to, dzieki jeszcze raz za help :) doceniam Twoje zaangazowanie w pomoc uzytkownikom tego forum.

Zycze milego dzionka!

0

Nie mialem nic zlego na mysli. Ale czesto wlasnie zapytania zarzynaja strone albo nieumiejetne sciaganie danych. Wiec optymalizacja zapytan to spora czesc optymalizacji projektu ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1