![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Mam takie zapytanie:
Jak policzyć ogólną liczbę rekordów, które ono zwraca bo mam z tym problem. Próbowałem np tak:
Ale zwraca mi to całkiem inna liczbę rekordów niż zwraca mi pierwsze zapytanie (usuwając oczywiście desc LIMIT ... ) Jak to inaczej zliczyć ? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Pierwsze zapytanie zawiera jeszcze GROUP BY, zaś drugie nie. Group by daje zupelnie inne wyniki
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Rozumiem, dlaczego jednak:
Zwraca mi: 1 Gdy wkleje zapytanie do myadmina dostaję ponad 50 rekordów. Co źle robię ? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Wklej do PMA dokładnie to samo zapytanie. Na 100% teraz tego nie robisz.
W php Twoje zapytanie powiedzmy budujesz tak: $sql = 'blabla twoje zapytanie'; Masz to zapytanie wyswietlić: echo $sql; I dokładnie to co ci zwróci echo $sql masz wkleić do PMA. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Dokładnie tak robiłem:
W PMA dostaje wynik który jest inny niż $total_items, zwykle dużo większy. Ten post edytował mefistofeles 22.10.2010, 08:09:52 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
aaa..., bo GROUP BY zwróci ci kilka rekordów a nie tylko jeden.
A ty robiąc mysql_fetch_array() pobierasz tylko pierwszy zwrócony rekord ![]() Musisz uzyc petli WHILE by pobrac wszystkie wyniki -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
W ten sposób
![]() Rzeczywiście jak zrobiłem:
To drukuje mi kilka rzędów liczb, ich suma jest pewnie tą o którą chodzi, jednak jak to teraz dodać? Jak próbuje zrobić tak:
To w ogóle nic mi nie wyświetla :/ |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
chcesz dodac a uzywasz tablicy? W pierwszej klasie nie uczyli cię dodawania?
![]()
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Coś mi się popierniczyło...
Mam teraz coś takiego:
Jednak suma jaką otrzymuje nie jest taka jak pokazuje PMA na to zapytania :/ |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 301 Pomógł: 25 Dołączył: 15.07.2007 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Nie lepiej użyć DISTINCT skoro i tak nic nie zliczamy? Drążąc temat dalej to jeżeli mamy fetchować i zliczać xx wyników (gdzie pewnie i tak każdy result zawiera w sobie pole o wartości 1 bo wątpię żeby tytuł książki się powtarzał), to mija się z celem używanie tego count... Już lepiej by było wykonać identyczne zapytanie do tego pierwszego tylko nie pobierać tytułu książki (bo nie potrzebny) i użyć mysql_num_rows(); W skrócie albo wymyślisz zapytanie które to zliczy wszystko razem (nie mam pomysłu jak to zliczyć tak żeby zwróciło w 1 ładnym wyniku) albo nie paćkać się i użyć zwykłego mysql_num_rows(). EDIT: z resztą takie zliczanie pętlą pewnie zwróciło by więcej niż to pierwsze zapytanie bo zliczyło by wszystkie rekordy nawet te powtarzające się. Przykład: Kod ID : tytul 1: A 2: A 3: B 4: C $q = 'SELECT id,tytul FROM ksiazki GROUP BY tytul'; $r = $q -> fetch_row(); // $r= array(array(1,A), array(3,B), array(4,C)); // $r -> num_rows = 3 $q = 'SELECT count(*) FROM ksiazki GROUP BY tytul'; $r = $q -> fetch_row(); // $r = array(array(2),array(1),array(1)); // gdybyśmy zsumowali to pętlą to wyszło by 4 a nie 3. O ile mi się nic nie poje*** to się wszystko zgadza ![]() ps. wybaczcie tą wyimaginowaną obsługę sterownika bazy danych ![]() Ten post edytował bmL 22.10.2010, 19:14:24 -------------------- Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Trochę już się to wszystko skomplikowane zrobiło.
Myślałem, że zliczenie ilości wyników nie będzie nastręczało aż takich problemów, a tutaj widze problem jest spory. ale będę walczył :| (Jeśli chodzi o tytuły książek to często się powtarzają z różnych powodów) Zauważyłem jeszcze jeden bardzo nie fajny problem. Mianowicie zapytanie:
Daje mi jakieś 'z kosmosu' wyniki dla zapytań które mają 3 lub mniej znaków. Gdy chce wyszukać tytuł który ma 3 znaki wyniki w ogóle nie maja nic do rzeczy z tymi które zwraca analogiczne zapytanie z LIKE i są do d.... Dlaczego tak się dzieje ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 14:17 |