Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Projektowanie bazy (zliczanie rekordów)
Forum PHP.pl > Forum > Przedszkole
matti9410
Mam takie pytanie mam taką baze
kategoria | link | temat
-------------------------------
potret | sad | sadsd
produkt | sad | sadsd
potret | sad | sadsd
potret | sad | sadsd
produkt | sad | sadsd
potret | sad | sadsd


i pytanie czy idzie jakoś zliczyć rekordy które mają wpis w kolumnie kategoria np portret czy muszę dodać jakąś osobną kolumnę ?
nospor
normalnie robisz warunek
...WHERE kategoria='portret'
i juz
matti9410
Ale chodzi mi o stronicowanie żeby wiedzieć ile jest wpisów żeby wyświetlić zdjęcia
nospor
No i?
Pytales jak zliczyc liczbe rekordow spelaniajacych dany warunek. Podalem ci wiec jak napisac taki warunek. Jak masz jakis inny problem to go opisz.
matti9410
Widocznie nie rozumiem jak to zrobić ;/ przepraszam haha.gif

chodzi o to że mam np. 100 wpisów w bazie i w kolumnie kategoria mam różne wartości i chciałbym wiedzieć ile jest rekordów z wartością portret w kolumnie kategoria. To jak to zrobić tym co ty tam pisałeś ?
nospor
Sadzilem, ze o COUNT(), ktore zlicza rekordy, to slyszales.....

select count(*) from TABELA where kategoria='portret'
To ci zwroci rekord z liczbą rekordow.
matti9410
Ok dzięki za pomoc ! smile.gif Jestem zielony w tym jak na razie, uczę się sam wiec jak widać szału z wiedzą nie ma tongue.gif
ZaXaZ
  1. SELECT SUM(kategoria='portret') AS suma
nospor
@ZaXaZ a po grzyba ma zapytanie leciec po wszystkich rekordach, skoro wiadomo ktore go interesują...? Twoja propozycja jest toalnie nieoptymalna. Fakt, przy 100 rekordach nie będzie widać różnicy, ale przy wiekszej ich liczbie roznica czasu wykonania będzie widoczna gołym okiem
ZaXaZ
Cytat(nospor @ 19.07.2014, 15:59:51 ) *
@ZaXaZ a po grzyba ma zapytanie leciec po wszystkich rekordach, skoro wiadomo ktore go interesują...? Twoja propozycja jest toalnie nieoptymalna. Fakt, przy 100 rekordach nie będzie widać różnicy, ale przy wiekszej ich liczbie roznica czasu wykonania będzie widoczna gołym okiem


Dzięki, potestuje bo właśnie jestem na etapie optymalizacji kodów.

mały ad. jednak sum nie uwzgledni pustych pól w porównaniu do count(*).
nospor
@matti9410 a Ty skoro sie uczysz, to popraw swoją strukture. Poprawna powinna wygladac tak:

Tabela KATEGORIA
ID
NAZWA

Tabela TWOJA_CO_MASZ_TERAZ
ID
ID_KATEGORII (a nie nazwa jak masz teraz)
LINK
TEMAT
ZaXaZ
@nospor, a co w przypadku gdy musimy policzyc kilka roznych rzeczy? (co lepiej, jedno zapytanie z kilka sum czy kilka zapytan z count(*)) ?
nospor
Cytat
@nospor, a co w przypadku gdy musimy policzyc kilka roznych rzeczy? (co lepiej, jedno zapytanie z kilka sum czy kilka zapytan z count(*)) ?

Na pewno szybkie będzie UNION, gdzie kazdą liczbę policzysz oddzielnym zapytaniem i połączysz w jedno przez UNION

Oczywiscie pozostaje kwestia odpowiednich indeksow na szukane pole, ale to chyba oczywiste.

Mozna tez isc w tę stronę:
  1. SELECT COUNT(IF(WARUNEK1,1,NULL)),COUNT(IF(WARUNEK2,1,NULL)) FROM TABELA WHERE WARUNEK1 OR WARUNEK2

Przy prawidłowych indeksach też powinno smigac w miare ładnie.

lub poprostu tak
  1. SELECT COUNT(*) FROM TABELA WHERE WARUNEK1 OR WARUNEK2 GROUP BY POLE
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.