Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] ile pobrac rekordow aby otrzymac x wierszy z uzyciem GROUP BY
Forum PHP.pl > Forum > Bazy danych
netvalue
Witam,

mam wartosc $x=10; ktora odpowiada za limit wyswietlnych wierszow.
Teraz ukladam zapytanie SQL:

  1. SELECT wartosc, stawka FROM tabela LIMIT $x


otrzymuje:

10, 2
15, 2
10, 2
15, 2
10, 2
15, 3
10, 3
15, 3
10, 3
15, 3

pobiera mi 10 rekordow z bazy (wszystkich jest ponad 1000) i ok
tylko teraz w php przerabiam troche pobrane dane pole "wartosc" i grupuje je po polu "stawka" (cos jak mysql GROUP BY)
dodaje + 2 do kazdego pola wartosc. czyli


12, 2
17, 2
12, 2
17, 2
12, 2
17, 7
12, 8
17, 9
12, 1
17, 4




nastepnie wyswietlam i okazuje sie ze np. zostaje wyswietlonych 5 wierszy bo pozostale 5 miala identyczna wartosc i zostalo pogrupowane...


70,2
17, 7
12, 8
17, 9
12, 1
17, 4




wszystko jest jak nalezy ale.... potrzebuje miec zawsze nawet na koncu po moich przerobkach bylo 10 wierszy...

czyli musze zadac pytanie do MYSQL ile trzeba pobrac wszystkich wierszy zeby bylo ich na koniec 10 nawet po GROUP BY
sowiq
Myślałem, myślałem i w końcu udało mi się zrozumieć co chcesz osiągnąć.

Pobierasz dane z MySQL zwykłym zapytaniem, a później robisz "grupowanie" tych danych w PHP i chcesz wiedzieć ile masz pobrać rekordów, żeby otrzymać w PHP 10 grup. Dobrze zrozumiałem?

Moje pytanie brzmi - czemu nie zrobisz grupowania w MySQL, tylko mielisz te dane po stronie PHP? Bo jeśli będziesz chciał to zrobić Twoim sposobem, to tak czy siak nie obędzie się bez kolejnego zapytania, które będzie grupowało. I skończy się na tym, że będziesz robił dwa zapytania do bazy tylko po to, żeby w PHP zrobić dokładnie to samo, co robiło pierwsze zapytanie thumbsdownsmileyanim.gif
netvalue
sowiq: tak zgadza sie smile.gif

robie grupowanie w php poniewaz dosc zaawansowane operacje matematyczne przeprowadzam na polu wartosc... to co napisalem w postach
wyzej ze dodaj +2 to tylko dla przykładu...
sowiq
  1. SELECT COUNT(*) AS count, stawka
  2. FROM tabela
  3. GROUP BY stawka
  4. LIMIT 10


Otrzymasz kilka (max 10) wyników, a w kolumnie "count" liczbę zgrupowanych rekordów. Jak zsumujesz kolumnę "count" to dostaniesz swój limit.

Ale dalej upieram się, że robisz od tyłka strony nerdsmiley.png
netvalue
narazie dalem tak ... i otrzymuje ile musze pobrac wierszy aby bylo dobrze...

  1. SELECT SUM( count )
  2. FROM (
  3. SELECT COUNT( id ) AS count
  4. FROM tabela
  5. GROUP BY stawka
  6. LIMIT 10
  7. ) AS A
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.