![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 23.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Muszę zliczyć ilość rekordów dla każdego profile_id, ale tak żeby nie liczyło powtarzających się author_id. I do tego żeby sortowało je malejąco i zapisało tylko 6 rekordów. Z pomocą googla stworzyłem takie zapytanie:
Tabela: profiles comments Kolumny: -id - unikalny id każdego komentarza -profile_id - id profilu do którego należy komentarz -author_id - id autora komentarza Tłumacząc jeszczę raz w innych słowach potrzebuję zapytania który pobierze dane do rankingu na najczęściej komentowany profil, ale tak żeby nie liczyło powtarzających się komentarzy tego samego autora. W tej chwili to zapytanie zlicza ilość komentarzy, ale razem z powtarzającymi się author_id, a powinno je pomijać jak już zliczy jedno. Będę wdzięczny za pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Użyj distinct, żeby nie powtarzało, a limit, aby wybrało X rekordów.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 23.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak... że używa się distinct w takim celu to wiem, próbowałem stworzyć zapytanie z tą regułą tylko nie mam pojęcia w ktorym miejscu ma być, a próbowałem z kilkunastoma kombinacjami.
|
|
|
![]()
Post
#4
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 23.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Count(DISTINCT k.id)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 23.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem z obiema opcjami, w różnych konfiguracjach i dalej nie działa. Jeśli komuś byłoby to pomocne to dodaje zrzut bazy danych:
Tabela z komentarzami:
Tabela z zapisanym rankingiem:
Tak wygląda skrypt i zapytanie:
W przypadku tych danych zapytanie powinno wypluwać taki ranking: 7-3 11-1 13-1 15-1 A wypluwa taki: 7-26 13-6 15-2 11-1 Kilkadziesiąt minut próbowałem skonstruować to zapytanie, w googlach również szukałem, ale niestety nie wychodzi mi. Także nie proszę o pomoc bo mi się nie chce tego zrobić, tylko po prostu nie umiem. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Poza tym nie musisz tego w pętli dodawać, ale zrobiv to od razu w SQL-u: INSERT INTO ... SELECT ... |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Złączenie pawdopodobnie jest po to, żeby uwzględniało również userów, którzy w ogóle nie komentowali. Count(*)=0. Dlatego też również jest LEFT JOIN.
Ale to się mogę tylko domyślać - nie ja jestem autorem. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 23.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
A po co to złączenie?
Działa idealnie, wielkie dzięki! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 13:39 |