Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze zliczaniem wyników z kilku tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
adamski9000
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
erix
A struktura tabel? Licz po tylko jednym polu, a nie gwiazdką.
Sephirus
  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? smile.gif

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

nospor
@Sephirus niby w jaki sposob Twoje zmiany miały poprawić rezultat? No w żaden 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.
Sephirus
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 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ą tongue.gif)
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.