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
Indeo
post
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Rozumiem, że chodzi Ci o to ile jest kategorii "aktywnych" czyli takich dla których obecnie są produkty a nie liczbę wszystkich kategorii.

Nie potrzeba do tego warunków WHERE - samo sprzężenie INNER wymusza integralność.
To zapytanie zwraca listę nazw kategorii dla których istnieją produkty (z tej kategorii):

  1. SELECT categories.name AS name FROM categories INNER JOIN products
  2. ON categories.id =products.id_categories
  3. GROUP BY name;


Natomiast ilość zwróconych rekordów można przechwycić np w php funkcją mysql_affected_rows().
W "C" działa to chyba podobnie - link
. Zawsze można zapytać osobno o ilość takich wierszy:
  1. SELECT count(categories.id) AS N FROM categories INNER JOIN products
  2. ON categories.id =products.id_categories
  3. ;


Nie wiem czy to o to chodziło (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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: 7.10.2025 - 13:07