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
michcioh
post
Post #3





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

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


Niestety dalej nie znam odpowiedzi na moje pytanie . To co napisales w pierwszym zapytaniu zwraca taki sam wynik jak moje zapytanie, ale dziekuje za byc moze bardziej poprawne rozwiazanie.
Jednak meritum tego posta dalej nie jest rozwiazane. Dalej nie wiem, jak zliczyc kategorie, ktore maja conajmniej jeden produkt, poniewaz Twoje drugie zapytanie nie dziala taka jak trzeba. Zwraca mi kolumne N z wierszem "2" mimo, ze poprzednie zapytanie wyrzuca tylko jeden wynik. Krotko mowiac, nie dziala tak jak powinno (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Prosze o dalsze propozycje, to nie moze byc az takie trudne :/

pozdrawiam
michcioh


Cytat(Indeo @ 1.04.2007, 12:02:43 ) *
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: 5.10.2025 - 04:31