Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Jak policzyć w bazie wpisy zaczynające się na określoną literę?
Forum PHP.pl > Forum > Przedszkole
tomii
Witam, prosiłbym o pomoc. Załozny ze mam prostą tabele:
  1. CREATE TABLE `ulica` (
  2. `id_ulica` INT(5) NOT NULL AUTO_INCREMENT,
  3. `ulica` VARCHAR(200) NOT NULL,
  4. PRIMARY KEY (`id_ulica`)
  5. );


Chciałbym policzyć w bazie wpisy, ktorych pierwsza litera np. zaczyna się na S. Powiedzmy że mamy kilka ulic które zaczynają się na S. Jak to zrobic? Chodzi mi aby wyświetliło tylko wynik w postaci cyfr ile mamy wpisów pod określoną ulicę.
Hazel
  1. SELECT COUNT (ulica) FROM ulica WHERE ulica LIKE 'S%'
tomii
dziękuje
tomii
mam jeszcze jedno pytanie - sprobowalem jeszcze na inny sposob:
  1. <?php
  2. $zapytanie = mysql_query ("SELECT * FROM $mysql_tabela WHERE ulica RLIKE '^[a]'") or 
  3. die ("Błąd w zapytaniu");
  4. ?>

czyli ze wyraz ma sie zaczynac na określoną literę - tylko jak mam teraz policzyc ile jest tych wyrazow? winksmiley.jpg
Hazel
Jeśli koniecznie chcesz to zrobić z poiomu PHP, to pozostaje Ci funkcja mysql_num_rows()" title="Zobacz w manualu PHP" target="_manual.
Moje zapytanie będzie jednak działać znacznie szybciej.
tomii
no wlasnie o to mi chodzilo - czy tak jak zrobilem bedzie dobrze? czy obciazy zdrowo serwer? wynik musze wyswietlic na stronie ...
  1. <?php
  2. $zapytanie = mysql_query ("SELECT * FROM $mysql_tabela WHERE ulica RLIKE '^[a]'") or 
  3. die ("Błąd w zapytaniu");
  4.  
  5. $num_rows = mysql_num_rows($zapytanie);
  6.  
  7. echo"(".$num_rows.") czegoś";
  8. ?>
Hazel
No jedno zapytanie serwera nie obciąży, jeśli masz zamiar to mocno zapętlić i oprócz tego chcesz jeszcze zrobić masę innych rzeczy - słowem, jest to rozbudowana aplikacja, a nie zwykła strona - lepiej zastosuj inne rozwiązanie. Ogólnie RLIKE zabija serwer SQL jeszcze bardziej niż LIKE... Ale jeśli to jedyne zapytanie albo jedno z nielicznych, to oczywiście bez obaw.
tomii
heh no to teraz nie wiem co mam robic winksmiley.jpg bo musze takich zapytan wykonac prawie tyle razy ile mamy liter w alfabecie winksmiley.jpg heh wiec chyba odpadnie ta metoda ...
Hazel
zrób i przetestuj - jeśli szybkośc działania będzie Cię zadowalać, to ok.
Jeśli nie - zastosuj LIKE i liczenie rekordów na poziomie SQLa, czyli funkcję agregującą COUNT.
tomii
u mnie działa ładnie - ale przypuszczam ze jak sie nalozy kilkudziesieciu uzytkownikow i juz tak ladnie nie bedzie działac winksmiley.jpg

dzieki wielkie za pomoc - [} browarek dla ciebie winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.