![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 18.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
Pewnie banał . Jak dopisać do tego COUNT(*)
Jak dopisuje do tego zapytania Count(*) to wyświetla mi tylko jeden wynik choć istnieje więcej a chciałbym żeby zliczyć ilość wyświetlonych wyników. Np. po wpisaniu frazy w szukajke zlicza mi ,że wyników znalazł np. 20. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Będziesz musiał wykonać drugie zapytanie odpowiedzialne wyłącznie za zliczanie ilości pasujących wyników.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 18.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem drugie zapytanie jak poradziłeś ale już to wczesniej próbowałem . Niby w bazie liczba Count(*) 949 co jest błędem ale wyświetla mi się jedeny wynik tylko. No dobrze wyswietlanie być może php źle napisany ale wyniki sa błędne więc gdzies robie błąd i nie wiem gdzie?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Niby w bazie liczba Count(*) 949 co jest błędem ale wyświetla mi się jedeny wynik tylko. Dlaczego uważasz, że jest błędem?Robisz dwa zapytania z takimi samymi klauzurami WHERE i JOIN ewentualnie ignorując sortowanie: Pamiętaj tylko, że jeżeli wykonujesz JOIN-y z relacją do-wielu zwróconych może być więcej rekordów niż "obiektów" w bazie. Wtedy powinieneś zliczać unikalne wystąpienia jakiejś kolumny - tutaj najprawdopodobniej s.id. Ten post edytował Crozin 26.05.2015, 09:38:12 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Za pomocą FOUND_ROWS można w jednym zapytaniu pobrać i zliczyć
https://dev.mysql.com/doc/refman/5.0/en/inf...tion_found-rows |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Warto jedynie mieć na uwadze: https://www.percona.com/blog/2007/08/28/to-...alc_found_rows/ - chociaż w sumie może coś już się zmieniło od tego czasu.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Przy zapytaniu gdzie miałem 10 JOINów to było szybsze od 2x wykonywanego zapytania
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@Turson: Tutaj jest jedno wielkie "to zależy" jeżeli chodzi o wydajność SELECT SQL_CALC_FOUND_ROWS vs. SELECT + SELECT COUNT.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Najprościej samemu sprawdzić co w tym wypadku lepiej się sprawdza.
Ba, jeżeli autor to zapytania wykonuje powiedzmy przez PHP to możemy tez policzyc count() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 18.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem dlaczego , za kazdym razem dostaje 0 wyników. Czy robie to dwoma zapytaniami czyli w drugim COUNT(*) Czy jeesli korzystam z SELECT SQL_NO_CACHE dostaje zero wyników . A jak korzystam ze swojego
wszystko jest Ok . Czy to w phpie jest gdzieś błąd ? Jesli w bazie wpisze jakas fraze i doam dwa zapynia
dostaje zero wynikow . |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli dostajesz zero wyników to... pewnie żaden rekord nie spełnia kryteriów. Pokaż dokładny kod, pokaż dokładne zapytania.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 18.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
Jakiś głupi chyba jestem . Nie umiem tego zrobić . Nieważne są nazwy tabel więc ich nie zmieniam.
potem echo "" i wiadomo. Poprosze o pomoc ? Ponieważ nie rozumiem. Chciałbym żeby wystapiła ilośc wyników znalezionych jak w pierwszym zapytniu to natepuje i jest ok. |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Nie powinieneś używać mysql_*() tylko PDO, ew. MySQLi.
2. Przecież tekstu tego drugiego zapytania nawet do żadnej zmiennej nie przypisałeś o jego wykonaniu nie wspominając. 3. Dlaczego przy zapytaniu z COUNT masz jeszcze jakieś inne kolumny? 4. Po co 2 razy wykonujesz to samo zapytanie (linia #7 i #9)? |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 18 Dołączył: 7.10.2007 Skąd: Pruszków Ostrzeżenie: (0%) ![]() ![]() |
Załóżmy że chcesz policzyć rekordy w tabeli news30_story. Aby uniknąć zdublowania rekordów spowodowanych np joinem możesz zrobić coś takiego:
Swoją drogą jeżeli chcesz policzyć rekordy z tabeli news30_story a kolumna story jest właśnie w tej tabeli to nie ma sensu tutaj robić tego joina. Tak przy okazji - jeśli nie masz to ustaw index na kolumnie story. Ten post edytował robertpiaty 26.05.2015, 13:34:04 -------------------- |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 18.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem tego . Czy robię coś źle ? Ten post edytował przem1969 26.05.2015, 14:05:14 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie wykonujesz żadnego zapytania (mysql_query).
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 18.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
Wpisze w szukajaca fraze np cos ? Tez dostaje wynik zero
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wyświetl sobie finalne zapytanie (echo $query) - albo masz w nim coś zrypanego i przez brak obsługi błędów w swoim kodzie nie widzisz tego albo po prostu nie ma rekordów spełniających te kryteria.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 08:42 |