Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: select count po where
Forum PHP.pl > Forum > Bazy danych > MySQL
raczkowski1
Witam
Próbuję wyświetlić tylko te kategorie produktów, które zawierają jakieś towary.
Mam takie zapytanie:
  1. SELECT c.categories_id, cd.categories_name, c.parent_id
  2. FROM categories c, categories_description cd
  3. WHERE c.parent_id = '0' AND c.categories_id = cd.categories_id AND cd.language_id='1' AND
  4. (SELECT count(p.products_id) AS total
  5. FROM products_description pd, products p
  6. LEFT JOIN manufacturers m ON p.manufacturers_id = m.manufacturers_id
  7. LEFT JOIN specials s ON p.products_id = s.products_id, products_to_categories p2c WHERE p.products_status = '1' AND p.products_id = p2c.products_id AND pd.products_id = p2c.products_id AND pd.language_id = '1' AND (p2c.categories_id IN (SELECT categories_id
  8. FROM `categories` cc WHERE c.parent_id = c.categories_id) OR p2c.categories_id = c.categories_id) AND p.products_quantity >= '0') >0
  9.  
  10. ORDER BY cd.categories_name

Zwraca mi listę z pominięciem dwóch kategorii, ale jak dam
  1. [...]OR p2c.categories_id = c.categories_id) AND p.products_quantity >= '0') > -1
  2.  
  3. ORDER BY cd.categories_name


To mi wyświetla wszystkie kategorie.

Co tu jest nie tak??



A znowu to zapytanie działa:
  1. SELECT c.categories_id, cd.categories_name, c.parent_id ,
  2. (SELECT count(cc.categories_id)
  3. FROM categories cc, categories_description ccd WHERE cc.parent_id = c.categories_id AND cc.categories_id = ccd.categories_id AND ccd.language_id='1'
  4. )AS total
  5. FROM categories c, categories_description cd
  6. WHERE c.parent_id = '0' AND c.categories_id = cd.categories_id AND cd.language_id='1' AND
  7. (SELECT count(cc.categories_id)
  8. FROM categories cc, categories_description ccd WHERE cc.parent_id = c.categories_id AND cc.categories_id = ccd.categories_id AND ccd.language_id='1'
  9. )>0
  10. ORDER BY cd.categories_name

Czyżby tamto je za długie...:/

Z góry dzięki za pomoc.
Pozdrawiam
uupah5
obawiam się, że nikomu nie będzie się chciało analizować tych wszystkich subquery i joinów.
tym bardziej, że z pewnością problem tkwi albo w złych warunkach złączeń, albo jakiś błąd przy warunkach logicznych albo w złym użyciu złączeń

nie mam innej rady jak zacznij od prostego zapytania, dodając kolejne elementy jakie Ci są potrzebne. możesz sobie pomóc wykorzystując widoki - zapytania będą bardziej modułowe.

i na marginesie, nie martwi Cię EXPLAIN takich zapytań?
raczkowski1
Witam,
Jakoś to po kolei jak pisałeś zrobiłem.

A co do EXPLAIN to te zapytania są w oscommerce, a ja potrzebowałem na szybko zrobić poprawkę po kimś.

Pozdrawiam
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.