![]() |
![]() |
![]()
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/ |
|
|
![]() |
![]()
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
|
|
|
![]()
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/ |
|
|
![]()
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.
|
|
|
![]()
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/ |
|
|
![]()
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?? |
|
|
![]()
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/
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 23:36 |