Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem ze zliczaniem wyników z kilku tabel, COUNT(*), WHERE
adamski9000
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.11.2011

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


Witam

Ostatnio natknąłem się na dziwny problem. Mianowicie potrzebuję zliczyć ilość wierszy stosując poniższe zapytanie nr 2. Niestety wynik zapytania zawsze jest 0. Natomiast zapytanie z tymi samymi warunkami, ale bez COUNT(*) zwraca poprawne wyniki. Poniższy wynik z obliczeń jest mi niezbędny do paginacji na stronę.

Poniższe zapytanie nr 1 zwraca poprawne wyniki.
  1. SELECT * FROM smsy,raporty
  2. WHERE raporty.imei='$imei'
  3. AND raporty.id_raport=smsy.id_raport


Poniższe zapytanie nr 2 zawsze zwraca 0
  1. SELECT COUNT(*) FROM smsy,raporty
  2. WHERE raporty.imei='$imei'
  3. AND raporty.id_raport=smsy.id_raport


Kombinacje z użyciem SQL_CALC_FOUND_ROWS i FOUND_ROWS() też dają wynik 0.

W związku z powyższym proste pytanie, jak zliczyć ilość wierszy z powyższego zapytania nr 1 ? Czy to jest błąd składni czy jakieś ograniczenie SQLa ?

Dziękuję za pomoc
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A struktura tabel? Licz po tylko jednym polu, a nie gwiazdką.
Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


  1. SELECT COUNT(smsy.*) FROM smsy,raporty
  2. WHERE raporty.imei='$imei'
  3. AND raporty.id_raport=smsy.id_raport


lub

  1. SELECT COUNT(smsy.id_raport) FROM smsy,raporty
  2. WHERE raporty.imei='$imei'
  3. AND raporty.id_raport=smsy.id_raport



Czyżby wystarczyło? (IMG:style_emoticons/default/smile.gif)

Poza tym, jak wspomniał @up, nie znamy struktury dokładnie a to zapytanie po części jest dla mnie trochę dziwne (IMG:style_emoticons/default/tongue.gif)



Ten post edytował Sephirus 22.12.2011, 09:42:53
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Sephirus niby w jaki sposob Twoje zmiany miały poprawić rezultat? No w żaden (IMG:style_emoticons/default/smile.gif)
Skoro select zwraca dane to select count też powinien zwracac wynik wiekszy od 0.

Nasuwa się wiec pytanie, w jaki sposób Ty te dane odbierasz? W kodzie php? To zapewne robisz to źle.
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


No to fakt trochę się zagalopowałem faktem, że zapytanie numer 1 działa autorowi a numer 2 nie - to dość dziwne jak na SQL'a - masz zdecydowanie rację - błąd leży gdzieś po odebraniu wyników.

Może przypisz to COUNT(*) pod jakąś nazwę - np count(*) AS `row_number` albo coś w tym stylu (IMG:style_emoticons/default/smile.gif) może model dostępu do bazy nie radzi sobie z taką nazwą pola jak COUNT(*) albo coś jest pogmatwane przy pobieraniu - pobierasz asocjacyjnie czy indeksowaną tablice?

(soorki - wstałem lewą nogą (IMG:style_emoticons/default/tongue.gif) )

Ten post edytował Sephirus 22.12.2011, 09:50:36
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 16:25