Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CodeIgniter] Grupowanie i COUNT
markuz
post
Post #1





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Witam,
Mam problem z grupowaniem wyników i sumowaniem rekordów z dołączonej tabeli.

  1. return $this->db_pg
  2. ->select('texts.*, COUNT(`{PRE}text_views`.`id`) as `views`')
  3. ->join('text_views', 'text_views.user_id = texts.user_id')
  4. ->where(array(
  5. 'texts.user_id' => $userID,
  6. 'text_views.created_at >' => date('y-m-d H:i:s', $from),
  7. 'text_views.created_at <' => date('y-m-d H:i:s', $to),
  8. ))
  9. ->group_by('texts.id')
  10. ->order_by('views', 'DESC')
  11. ->limit($limit)
  12. ->get($this->table);


To zapytanie zwraca rekordy lecz views wynosi tyle samo (suma wszystkich widoków). A chciałbym aby views grupowane było według tekstów (texts.id).

Zwraca:

Kod
nazwa_tekstu | 34
nazwa_tekstu | 34
nazwa_tekstu | 34
...


Powinno:

Kod
nazwa_tekstu | 18
nazwa_tekstu | 14
nazwa_tekstu | 10
...


Ten post edytował markuz 25.02.2014, 12:41:18


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Szczerze nie rozumiem. Wynosi tyle samo bo przypisujesz views sumę wszystkich rekordów w tabeli text_views.


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





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


A w jaki sposób przypisać sumę rekordów w tabeli text_views dla poszczególnych rekordów w tabeli views?

Ok. Poradziłem sobie. Głupi błąd jak zawsze ;0

  1. return $this->db_pg
  2. ->select('texts.*, COUNT(`{PRE}text_views`.`id`) as `views`')
  3. ->join('text_views', 'text_views.text_id = texts.id')
  4. ->where(array(
  5. 'texts.user_id' => $userID,
  6. 'text_views.created_at >' => date('y-m-d H:i:s', $from),
  7. 'text_views.created_at <' => date('y-m-d H:i:s', $to),
  8. ))
  9. ->group_by('texts.id')
  10. ->order_by('views', 'DESC')
  11. ->limit($limit)
  12. ->get('texts');


Zamiast łączyć według id użytkownika łączyłem tabele według id tekstu.

Można zamknąć temat.

Ten post edytował markuz 25.02.2014, 13:15:41


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 08:34