Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] Połączenie zapytań.
Forum PHP.pl > Forum > PHP > Frameworki
Lorum3
Witam,

mam pewien problem, zastanawiam się w jaki sposób dołączyć do poniższego zapytania zliczanie rekordów z innej tabeli.

  1. $test->where('author', '=', $this->user->id)->order_by('date', 'DESC')->find_all();


Podsumowując, chciałbym w jednym zapytaniu pobierać wszystko z powyższej tabeli i dodatkowo zliczać liczbę komentarzy dla poszczególnych wpisów z tabeli comment.

Macie jakieś pomysły?
mortus
Może za pomocą złączenia - metoda join()?
Lorum3
Cytat(mortus @ 7.05.2012, 11:00:32 ) *
Może za pomocą złączenia - metoda join()?


No inaczej się nie da :- ) Z tym, że zastanawiam się czy to jest w ogóle wykonywalne.
skowron-line
@Lorum3 na początek to napisz sobie zapytanie i w PMA sprawdz czy działa dopiero później wpisuj do QB.
Lorum3
Cytat(skowron-line @ 7.05.2012, 11:16:26 ) *
@Lorum3 na początek to napisz sobie zapytanie i w PMA sprawdz czy działa dopiero później wpisuj do QB.


Rozumiem, o co chodzi, z tym, że ja zupełnie nie mam pomysłu jak to wszystko połączyć. Zasadniczo wydaje mi się, że jest to nie osiągalne.
Crozin
Zapytanie SQL (zakładając, że pobierasz przykładowo aktualności danego użytkownika oraz ilość komentarzy do każdego z nich):
  1. SELECT n.*, COUNT(c.id) AS comments_count FROM news n LEFT JOIN comments c ON n.id = c.news_id WHERE n.author_id = :aid ORDER BY n.date DESC
Przy czym takie coś jak ilość komentarzy dla danego obiektu powinieneś raczej trzymać jako zwykłą kolumnę (w tabeli danego obiektu, tu: aktualności) i zwiększać/zmniejszać jej wartość o jeden przy dodawaniu/usuwaniu komentarzy - jak widzisz ułatwiłoby Ci to nieco życie oraz uprościło (czytaj: przyspieszyło) wykonywanie zapytań.
Lorum3
Tak, z tym, że wtedy wykonuję niepotrzebnie dodatkowe zapytanie.
skowron-line
Cytat(Lorum3 @ 7.05.2012, 09:20:35 ) *
Rozumiem, o co chodzi, z tym, że ja zupełnie nie mam pomysłu jak to wszystko połączyć. Zasadniczo wydaje mi się, że jest to nie osiągalne.

Jeżeli nie wiesz jak napisać zapytanie to odpowiedz na pytanie co to ma wspólnego z FW questionmark.gif
phpion
To dodatkowe zapytanie (UPDATE) będzie pikusiem w stosunku do każdorazowego zliczania liczby rekordów. Wprawdzie takie rozwiązanie nie jest zalecane pod kątem normalizacji, ale na pewno wpłynie pozytywnie na wydajność całości. Zauważ, że to dodatkowe zapytanie robisz tylko w momencie dodawania/edycji/usuwania danych z tabeli, a wykonanie zliczania rekordów musisz robić przy każdym wyciąganiu danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.