Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Zliczanie wystąpień w powiązanej tabeli, ...to oznacza kłopoty :P
rytek
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 14
Dołączył: 21.01.2009
Skąd: Mszczonów

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


Witam.

Mam problem z kwerendą mysql.

Mój problem wygląda następująco:
Muszę pobrać tylko te rekordy z tabeli1, które mają swoje odpowiedniki w tabeli2 (pole id), przy czym chcę pobierać 5 kolejnych rekordów, począwszy od x.

Mój kod wygląda następująco:

  1. SELECT *, count(tabela2.id) ilosc FROM prefix_artykuly_glowna WHERE prefix_artykuly_glowna.typ='T' AND prefix_artykuly_glowna.typ='T'
  2. ORDER BY prefix_artykuly_glowna.id DESC LEFT JOIN prefix_segregator_glowna tabela2 ON tabela2.id=prefix_artykuly_glowna.id
  3. GROUP BY prefix_artykuly_glowna.id
  4. LIMIT 0, 5


Lecz niestety nie działa. Nie wiem co jest źle i czy w ogóle da się coś takiego zrobić.
Proszę o pomoc.

Pozdrawiam, Rytek.

Ten post edytował rytek 29.07.2009, 11:29:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MatKus
post
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 3
Dołączył: 27.08.2008

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


Jako, że akurat siedze nad czymś podobnym, to nie będę zakładał nowego tematu.
Otóż też próbuję wyciągnąć ilość rekordów z powiązanej tabeli. I w sumie działa poprawnie, ale tylko pod warunkiem, że ilość ta nie jest zerowa.
  1. SELECT product_categories.*, count(products_in_categories.category_id) AS ilosc
  2. FROM product_categories JOIN products_in_categories ON product_categories.id=products_in_categories.category_id
  3. GROUP BY name
  4. ORDER BY name


Jak mogę to zmienić, żeby wyrzuciło mi też elementy, które nie mają wystąpień w powiązanej tabeli i z informacją właśnie, że takowych jest właśnie 0.
[edit]OK, problem już rozwiązałem. Google twoim przyjacielem, jak to mówią (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Nie wiem, na ile to jest optymalne, pewnie nie zbyt ze względu na zagnieżdżony select, ale działa, więc dla potomności:
  1. (SELECT `product_categories`.*, count(`products_in_categories`.category_id) AS ilosc
  2. FROM `product_categories` JOIN `products_in_categories` ON `product_categories`.id=`products_in_categories`.category_id
  3. GROUP BY name
  4. )
  5. UNION
  6. (
  7. SELECT `product_categories`.*, 0 AS ilosc
  8. FROM `product_categories` WHERE `product_categories`.id NOT IN (SELECT category_id FROM `products_in_categories`)
  9. )
  10. ORDER BY name


Ten post edytował MatKus 30.07.2009, 09:34:08
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: 15.10.2025 - 02:18