Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ile można dać max zapytań
Taz40
post 30.07.2003, 10:52:45
Post #1





Grupa: Zablokowani
Postów: 10
Pomógł: 0
Dołączył: 20.03.2003
Skąd: StrefaSoftu.net

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


Witajcie. Montuje kolejny dział na swoją stronę (linki). Wszystkie dane będą w bazie. Teraz na głównej stronie działu jest 14 kategorii i chciałbym aby przy każdej z nich widniała liczba aktualnych rekordów w danej kategori. Wedle tego co sobie wymyśliłem to muszę zapytać baze 14 razy zeby otrzymać te wyniki. Wszystkie linki sa w jednej tabeli a sortuje je poprzez np.
Kod
WHERE cat='shop'

Oto moje zapytanie do bazy:[php:1:b3db10b368]<?php
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='game'");
$num_game = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='fun'");
$num_fun = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='hobby'");
$num_hobby = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='music'");
$num_music = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='cdr'");
$num_cdr = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='news'");
$num_news = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='portal'");
$num_portal = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='soft'");
$num_soft = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='net'");
$num_net = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='pl'");
$num_pl = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='komp'");
$num_komp = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='driver'");
$num_driver = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='tour'");
$num_tour = mysql_num_rows($result);
$result = mysql_db_query($dbname, "SELECT * FROM site_links WHERE cat='shop'");
$num_shop = mysql_num_rows($result);
?>[/php:1:b3db10b368]
na pierwszy rzut oka troche duzo tego a pozatym slyszalem ze zbyt wiele zapytan "zabija" MySQL'a. Mozecie to potwierdzić? Jesli tak to w jaki sposób to zoptymalizowac?


--------------------
Pozdrawiam - Taz40
http://www.strefasoftu.net/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Jabol
post 30.07.2003, 11:29:13
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


połącz je za pomocą OR i potem order by cat
Go to the top of the page
+Quote Post
Taz40
post 30.07.2003, 11:30:45
Post #3





Grupa: Zablokowani
Postów: 10
Pomógł: 0
Dołączył: 20.03.2003
Skąd: StrefaSoftu.net

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


Mógłbyś rozwinąć myśl, bo nie za bardzo kojarze.


--------------------
Pozdrawiam - Taz40
http://www.strefasoftu.net/
Go to the top of the page
+Quote Post
Jabol
post 30.07.2003, 11:36:34
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


zrób to jednym selectem i wszystkie warunki połącz w jeden za pomocą or. Potem daj 'order by cat', rzeby się posortowały tak jak chcesz.
Go to the top of the page
+Quote Post
Taz40
post 30.07.2003, 11:39:54
Post #5





Grupa: Zablokowani
Postów: 10
Pomógł: 0
Dołączył: 20.03.2003
Skąd: StrefaSoftu.net

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


Do posortowania to owszem, ale jak do kazdej z kategorii policze wiersze?


--------------------
Pozdrawiam - Taz40
http://www.strefasoftu.net/
Go to the top of the page
+Quote Post
Jabol
post 30.07.2003, 11:46:17
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


to zrób tak[sql:1:1bb0194447]SELECT COUNT(cat) FROM site_links GROUP BY cat;[/sql:1:1bb0194447]sorry, trochę Cie źle przedtem zrozumiałem

//boże... o czym ja myślę dzisiaj??
Go to the top of the page
+Quote Post
maggot
post 30.07.2003, 11:49:28
Post #7





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 7.05.2002
Skąd: Sz-n/Wroc/Wawa

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


1. Jezeli tylko chcesz poznac liczbe rekordow to lepiej pisac
[sql:1:826a4c97d2] SELECT COUNT(*) FROM ...[/sql:1:826a4c97d2]
bedzie o wiele szybciej, bo po co pobierac dane (*), ktorych nie bedziemy uzywac

2. zapytanie, ktorego potrzebujesz wyglada mniej wiecej tak
[sql:1:826a4c97d2] SELECT COUNT(*) FROM tabela GROUP BY cat[/sql:1:826a4c97d2]

3. Dobrym zwyczajem jest zrobic dodatkowa tabele 'kategorie' i potem w linkach podawac tylko id_kategorii


--------------------
/maggot/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:36