kkuubbaa88
12.06.2010, 17:01:34
witam
od dłuższego czasu mam problem z rozwikłaniem problemu w jednym zapytaniu. mam przykładową tabelę:
id | pole1
---------
1 | 0
2 | 1
3 | 4
4 | 5
5 | 2
7 | 1
9 | 0
13 | 3
i teraz potrzebuje zliczyc wszystkie wystepujace id, co robilem w standardowy sposob pobierajac wszystkie id, a potem mysql_num_rows.
dodatkowo musze zliczyc ilosc wierszy, ktore maja wartosc pola1 wiekszego od 2. Jak to wszystko zrobic w jednym zapytaniu ?
athei
12.06.2010, 17:14:38
SELECT count(id) AS 'ilosc', (SELECT count(pole1) FROM tabela WHERE pole1>2) AS 'costam' FROM tabela
kkuubbaa88
12.06.2010, 17:16:27
wlasnie chcialem unikat podwójnych zapytan, bo to wydolnościowo gorzej wypada. wiec nie da rady zrobic tego inaczej jak podwojnie ?
kartin
12.06.2010, 17:22:09
Wydajnościowo to gorzej działa mysql_num_rows()
Możesz też użyć takiego zapytania
SELECT COUNT(id) FROM test
UNION
SELECT COUNT(id) FROM test WHERE pole1 > 2
kkuubbaa88
12.06.2010, 17:30:22
a musi być za każdym razem podwójne select ? w moim przypadku lacze z 6 tabel do tego jest wiele warunków i przy podwójnym zapytaniu będę musiał to powtarzać i w sumie zapytanie będzie miało z 20 lini....
bastard13
12.06.2010, 20:34:26
To albo chcesz zrobić wszystko w jednym zapytaniu, albo chcesz mieć krótkie i przejrzyste, kilku-wyrazowe zapytania, których zadawanie z pewnością zajmie więcej niż dwadzieścia linii. I będzie dużo mniej wydajne...
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.