IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   [mysql] как получить количетво? (http://www.imho.ws/showthread.php?t=54271)

Psionic Vision 20.03.2004 00:47

[mysql] как получить количетво?
 
Как получить количествой записей в таблице?
Допустим, есть таблица

      ТЕКСТ | ВИДИМЫЙ
1 - lalala    | 0
2 - lalala    | 1
3 - lalala    | 1

Вот, здесь мне надо количество записей, где ВИДИМЫЙ = 1. Какой QUERY здесь нужен?

Saruman 20.03.2004 01:22

Neo
SELECT COUNT( * ) FROM mytablename WHERE ВИДИМЫЙ = 1

Psionic Vision 20.03.2004 01:40

Saruman
Понятно. А что возвращает этот запрос? Число или array?
$a = DB->query("SELECT COUNT * FROM mytable WHERE visible = 1");

чему теперь равно $a?

Добавлено через 11 минут:
При этом:

PHP код:

require './inc/global.php';
$cnt $DB_site->query("SELECT COUNT(*) FROM neo_comments WHERE visible = '1'");
var_dump ($cnt); 


Получается это:

resource(15) of type (mysql result)

И что теперь?

AleXXXSoft 20.03.2004 01:49

PHP код:

# запросик
$cnt mysql_query("SELECT COUNT(*) AS cnt FROM neo_comments WHERE visible = 1"); 
# на выходе массив
$cnt mysql_fetch_array($cnt);
# из него достали количество
$cnt $cnt['cnt']; 


Psionic Vision 20.03.2004 03:56

А я нашел вариант попроще.

$countcomms=$DB_site->query('SELECT COUNT(*) AS comms FROM neo_comments WHERE visible=0');
$newcomms=number_format($countcomms['comms']);

Psionic Vision 21.03.2004 21:04

Хотя, мой вариант не действует...
AlexXXsoft, спасибо :)

ZoKeR 28.03.2004 01:52

$result = mysql_query("SELECT * FROM vklad WHERE id_user = '$user_id' and sostoyanie='0'") or die("Ошибка") ;
$num=mysql_num_rows($result);

Это на мой взгляд самый удобный способ... а главное работает...

Vaulter 28.03.2004 01:58

ZoKeR
он медленнее чем count(*)
Neo
используй это:
PHP код:

list($cnt)=mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM mytablename WHERE ВИДИМЫЙ = 1")); 


ZoKeR 28.03.2004 03:21

Намного бысрее или не существенно? А то если на 0,000001 сек быстрее то мне программу не надо переделывать...

AleXXXSoft 29.03.2004 09:53

намного быстрее, т.е. не происходит выборка всей таблицы, и не создается временная таблица, чтобы отсортировать результат)) быстрее эдак раз в 100, а если таблица огромная, то и раз в 1000 =)

is_absent 29.03.2004 10:33

Neo
если хочешь узнать, насколько у тебя хорошо написан запрос пользуйся командочкой explain
практически все современные субд в той или иной степени понимают эту команду
для сравнения:
explain select * from table говорит, что просмотрены были все строки таблицы (около 10000) и выполнялся что-то около 5-6 секунд
а explain select count(*) from table вообще не просматривает табличку и выполняется где-то 10^(-6) секунд :)
вот... :-) надеюсь помог.

AleXXXSoft 29.03.2004 11:37

кстати насчет EXPLAIN: у меня на сервере на
хостинге он выдает Access Denied .... =( на локалхосте поэксперементирвоал - да)) реально) не знал такого, спасиб, лови пятак) штука МНЕ ПОЛЕЗНАЯ.


Часовой пояс GMT +4, время: 10:46.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.