Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ile rekordów ma kwerenda
michcioh
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 31.03.2007

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


Witam!

Jestem na wymianie studenckiej, wykonuje projekt w Javie, ktory laczy sie z baza MySQL. Mam dwie tabele w mojej baze danych:

  1. CREATE TABLE categories (
  2. id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3. name text NOT NULL
  4. );
  5.  
  6. CREATE TABLE products (
  7. id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
  8. id_categories int NOT NULL,
  9. name text NOT NULL,
  10. amount int NOT NULL,
  11. description text NOT NULL,
  12. FOREIGN KEY(id_categories) REFERENCES categories(id)
  13. );


Potrzebuje wyswietlic ilosc rekordow z kwerendy, ktora wyswietla, jakie kategorie maja conajmniej jeden produkt. Innymi slowy ile jest takich kategorii, ktore maja conajmniej jeden produkt.
Wpomniana kwerende udalo mi sie sklecic w ten sposob:
  1. SELECT categories.name AS name FROM categories, products WHERE ( SELECT count(products.id) FROM products) >0 AND categories.id =products.id_categories GROUP BY name;


Czy ktos moze mi podpowiedziec jak teraz zliczyc, ile jest tych kategorii? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jesli nie znajde rozwiazania bede musial wykonac to w inny sposob, od strony programistycznej duzo toporniejszy, a chcialbym tego uniknac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdrawiam
michcio
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Norbas
post
Post #2





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

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


Może tak:
  1. SELECT COUNT(categories.id)
  2. FROM categories WHERE id IN (
  3. SELECT categories.id
  4. FROM categories LEFT JOIN products ON categories.id=products.id_categories
  5. GROUP BY categories.id
  6. HAVING COUNT(products.id)>0)
Go to the top of the page
+Quote Post
michcioh
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 31.03.2007

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


Cytat(Norbas @ 2.04.2007, 01:00:48 ) *
Może tak:
  1. SELECT COUNT(categories.id)
  2. FROM categories WHERE id IN (
  3. SELECT categories.id
  4. FROM categories LEFT JOIN products ON categories.id=products.id_categories
  5. GROUP BY categories.id
  6. HAVING COUNT(products.id)>0)


dziekuje, dziala (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Moj kumpel z wymiany studenckiej zaproponowal jeszcze inne dobre rozwiazanie:
  1. SELECT count(DISTINCT categories.id) FROM categories, products WHERE categories.id = products.id_categories;

Ale w zyciu nie widzialem distinct w funkcji count. Mysle ze warto pokazywac takie rozwiazania takze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

dziekuje jeszcze raz i pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
michcioh
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: 12.10.2025 - 01:26