Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Łączenie wyników
darektbg
post 19.04.2009, 09:35:21
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 25.09.2006

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


Posiadam dwie tabele:
  • Category
  • Post
Każdy post ma przypisaną jedną kategorie, w tabeli ta zależność wygląda nastepująco: Category posiada pole Category_id w Tabeli Post jest pole Post_category_id.
Chcę pobrać listę wszystkich rekordów z Category, ale wraz z ilością przypisanych jej postów. Oczywiście można dodać dodatkowe pole w w Tabeli Category co przechowywała by ilość postów jej przypisanych, jednak tworzy to dodatkową niepotrzebną zależność, nie wspominając o nieeleganckim rozwiązaniu winksmiley.jpg
Jak napisać takie zapytanie, tak aby pobierają wszystkie rekordy z Category dołączyć do wyniku liczbę przypisanych do niej postów? Domyślam się, że trzeba będzie użyć JOIN, jednak przyznam się, że do tej pory unikałem tego jak ognia, a teraz są tego skutki ;-)


--------------------
skocz.org - system skracania linków
Go to the top of the page
+Quote Post
kantek
post 19.04.2009, 10:32:13
Post #2





Grupa: Zarejestrowani
Postów: 73
Pomógł: 15
Dołączył: 2.04.2009
Skąd: koszalin

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


Witam. Zobacz 4 od góry post DeyVa tam masz tą samą sytuację.

http://forum.php.pl/index.php?showtopic=20...art=#entry12181


czyli masz :
  1. SELECT Category.Category_id, count( Post.Post_id )
  2. FROM Category LEFT JOIN Post ON ( Category.Category_id = Post.Post_category_id )
  3. GROUP BY Category.Category_id


a jakbyś w obu tabelach miał tą samą nazwę kolumny Category_id

  1. SELECT Category.Category_id, count( Post.Post_id )
  2. FROM Category LEFT JOIN Post USING (Category_id)
  3. GROUP BY Category.Category_id


Pozdrawiam

Ten post edytował kantek 19.04.2009, 10:53:31


--------------------
kantek.com.pl
Go to the top of the page
+Quote Post
darektbg
post 19.04.2009, 14:10:05
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 25.09.2006

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


A jak będzie wyglądać sytuacja kiedy, Category będzie miała jeszcze pola Category_name i Category_title które też trzeba dołączyć do wyniku. Zakładam, że tabela Category i Post ma takie samo pole Category_id


--------------------
skocz.org - system skracania linków
Go to the top of the page
+Quote Post
kantek
post 19.04.2009, 15:29:26
Post #4





Grupa: Zarejestrowani
Postów: 73
Pomógł: 15
Dołączył: 2.04.2009
Skąd: koszalin

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


Dajesz po select co chcesz otrzymać:

czyli:

  1. SELECT Category.Category_id, Category.Category_name, Category.Category_title, count( Post.Post_id )
  2. FROM Category LEFT JOIN Post USING (Category_id)
  3. GROUP BY Category.Category_id


Pozdrawiam

Ten post edytował kantek 19.04.2009, 15:30:03


--------------------
kantek.com.pl
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 06:09