Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zliczenie wypełnionych pól w tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
Loozak
Chciałbym policzyć ile jest w tabeli wypełnionych pól (komórek, czy jak się to zwie;)). Nie każdy rekord w tabeli ma wypełnione wszytskie pola i chce wiedzieć ile jest wypełnionych pól. Mam nadzieję że domyślacie się o co mi chodzi winksmiley.jpg Czy zna ktoś jakąś funkcję, która byłaby tu użyteczna. Jeżeli ktoś byłby na tyle dobry to mile widziany odpowiedni kod.
adwol
Sprecyzuj, co znaczy nie wypełnionych. Jeśli nie wypełniony znaczy dla Ciebie różny od NULL to od tego jest funkcja agregująca count().
[sql:1:5b8077681f]select count(pole) from tabela[/sql:1:5b8077681f]
Loozak
O to mi chodziło. Tylko, że kiedy zbuduję zapytanie w stylu:[php:1:a45c208f53]$sql = mysql_query ("SELECT count(poniedzialek) FROM tabela;");
echo ("$sql");[/php:1:a45c208f53]
To zwraca Resource id #5. Oczywiście po zadaniu takiego zapytania w phpmyadminie wszytsko działa i zlicz poprawnie. Co poprawić w kodzie, żeby było dobrze. I jeszcze jedna sprawa. W tej tabeli jest więcej pól (wtorek, środa, itp) i je także chciałbym zliczyć. Pliz help!
BzikOS
[php:1:ae1d6e6d32]<?php
$result = @mysql_query( 'SELECT count(poniedzialek), count(wtorek) FROM tabela' );
list( $pn, $wt ) = @mysql_fetch_row( $result );
print( $pn . '<br>' . $wt );
?>[/php:1:ae1d6e6d32]
Cudi
[manual:1822e85a4c]mysql_query()[/manual:1822e85a4c] zawsze zwraca wskaźnik wyniku, a wartość tego wyniku możemy uzyskać poprzez użycie np. funkcji [manual:1822e85a4c]mysql_fetch_row()[/manual:1822e85a4c]
Loozak
Dzięki wielkie za odpowiedzi. W wyniku waszych podpowiedzi skleciłem następujący kod:[php:1:3ecf126461]$result = mysql_query ('SELECT count(poniedzialek), count(wtorek) FROM `1a` WHERE poniedzialek != ""');
list($pn) = @mysql_fetch_row($result);

$result1 = mysql_query ('SELECT count(wtorek) FROM `1a` WHERE wtorek != ""');
list($wt) = @mysql_fetch_row($result1);
echo($pn+$wt); [/php:1:3ecf126461]
No i fajnie wyświetla mi ilość wszytskich wypełnionych pól. Jednak jak sami widzicie nie jest to zbyt zgrabny kod. Czy nie można by tego zrobić prościej, np jednym zapytaniem? Od razu mówię, że konstrukcja typu [php:1:3ecf126461]<?php
'SELECT count (poniedziałek), count(wtorek) FROM `1a` WHERE poniedzialek !="" && wtorek != ""'
?>[/php:1:3ecf126461]
odpada. Nie jest to może jakaś wązna sprawa, bo kod działa tylko tam jest 5 dni tygodnia i trochę zbyt rozbudowany będzie ten skrypt.
spenalzo
jednym zapytaniem to może tak:
[sql:1:ad3b386e5c]SELECT count (poniedzialek) AS ile, 'poniedziałek' AS dzien FROM `1a` WHERE poniedzialek <>''
UNION
SELECT count (wtorek) AS ile, 'wtorek' AS dzien FROM `1a` WHERE wtorek <>''
UNION
SELECT count (sroda) AS ile, 'środa' AS dzien FROM `1a` WHERE sroda <>''
UNION
SELECT count (czwartek) AS ile, 'czwartek' AS dzien FROM `1a` WHERE czwartek <>''
UNION
SELECT count (piatek) AS ile, 'piątek' AS dzien FROM `1a` WHERE piatek <>'' [/sql:1:ad3b386e5c]
questionmark.gif
Powinieś otrzymać 5 wierszy z kolumną "ile" z iloscia, i "dzien" z nazwa dnia.
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.