Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacja wiele do wileu w jednym rekordzie
Siner
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 6
Dołączył: 2.01.2004

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


Witam,
mam 3 tabele, news, categories, news_to_categories. Chciałem pobrać news i kategorie dla danego wpisu w taki sposób:
  1. SELECT *
  2. FROM `a_news` n
  3. LEFT JOIN a_news_to_categories nc ON n.id = nc.newsID
  4. LEFT JOIN a_categories c ON c.id = nc.categoryId

Tylko w przypadku gdy do news przypisane są 3 kategorie to są zwracane mi 3 rekordy z takimi samymi kolumnami tylko innymi kategoriami. Czy da się stworzyć takie zapytanie żeby wszystko było zwrócone w jednym rekordzie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
woj_tas
post
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 36
Dołączył: 31.03.2006
Skąd: Zielona Góra

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


Spróbuj tak:
  1. SELECT a_news. * ,
  2. GROUP_CONCAT( a_categories.title SEPARATOR ', ' ) AS kategorie,
  3. GROUP_CONCAT( a_categories.url SEPARATOR ', ' ) AS urle,
  4. a_users.login FROM a_news LEFT JOIN a_news_to_categories ON ( a_news.id = a_news_to_categories.newsId )
  5. LEFT JOIN a_categories ON ( a_news_to_categories.categoryId = a_categories.id )
  6. LEFT JOIN a_users ON ( a_users.id = a_news.author )
  7. WHERE a_news.id IN (SELECT newsId FROM a_news_to_categories WHERE categoryId = '$category') AND a_news.SHOW = 1
  8. GROUP BY a_news.id
  9. LIMIT $page, $perPage


Przy czym $category to nie url tylko id kategorii.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 03:42