[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не знаю как вывести GROUP Count
Страницы: 1, 2
Frost-56
Есть БД:

user posted image


В ней seid (id сериала) (sez сезон) (ser серия).

Как мне по id сериала подсчитать количество сезонов? при этом некоторые поля имею значение NULL.

SELECT count(distinct sez) FROM dle_post WHERE seid = '".$zaprosnewarr['seid']."'


Вывел мне бешенные цифры: 93696101
Тоесть id сериала и цифра 1 вконце
У меня даже записей там строк 200 от силы.
Эли4ка
1)
Цитата
Функция COUNT(expr) всегда считает только те строки, у которых результатом выражения expr является NOT NULL.

2)попробуйте так:
SELECT seid, COUNT(*) FROM dle_post GROUP BY seid
Frost-56
Цитата (Эли4ка @ 31.08.2018 - 23:58)
1)
Цитата
Функция COUNT(expr) всегда считает только те строки, у которых результатом выражения expr является NOT NULL.

2)попробуйте так:
SELECT seid, COUNT(*) FROM dle_post GROUP BY seid

user posted image
Добавил 2 сезона по 1 серии.

Вывожу так:
					
$vivod = mysqli_query($link, "SELECT seid, COUNT(*) FROM dle_post GROUP BY seid");

//echo 'Строк '.$vivod->num_rows;
print_r($vivod);


Но он не видит что там 3 сезона, всегда показывает 2

mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 2 [type] => 0 )
Frost-56
Цитата (Эли4ка @ 31.08.2018 - 23:58)
1)
Цитата
Функция COUNT(expr) всегда считает только те строки, у которых результатом выражения expr является NOT NULL.

2)попробуйте так:
SELECT seid, COUNT(*) FROM dle_post GROUP BY seid

А все, вы просто по сериям делали, а мне сезоны надо было, спасибо вам большое))
twin
Цитата (Эли4ка @ 31.08.2018 - 18:58)
COUNT(*)

Так не надо. В InnoDB (а оно сейчас априори) лучше указывать поле (индекс).
SELECT seid, COUNT(`id`) FROM dle_post GROUP BY seid
или что там у него, фиг знает.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Эли4ка
Цитата
Так не надо.

twin,согласна,но это ж был пример под его задачу. Сам автор дальше уже оптимизирует как надо. laugh.gif
twin
Никогда не оправдывайся за косяки примерами. Признавай их.
Написала звездочку, все, кто потом прочитают, будут тоже звездочку ставить

Цитата
Мы ответственны за тех, кого приручили.
(с) А. Сент-Экзюпери


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Frost-56
Так, а если id сериала будет другой? Как задать чтобы он групировал поле sez по idser ?
Эли4ка
Цитата
Никогда не оправдывайся за косяки примерами. Признавай их.
Написала звездочку, все, кто потом прочитают, будут тоже звездочку ставить

Поняла cool.gif
Цитата
Так, а если id сериала будет другой?

WHERE добавить.
Цитата
Как задать чтобы он групировал поле sez по idser ?

тем же GROUP BY

P.S. если не затруднит,выложите структуру таблицы и как там данные и какие хранятся,так будет проще.(просто idser я так и не нашла на скрине,может опечатка,а с таблицей будет проще)
Frost-56
Цитата (Эли4ка @ 1.09.2018 - 03:37)
Цитата
Никогда не оправдывайся за косяки примерами. Признавай их.
Написала звездочку, все, кто потом прочитают, будут тоже звездочку ставить

Поняла B)
Цитата
Так, а если id сериала будет другой?

WHERE добавить.
Цитата
Как задать чтобы он групировал поле sez по idser ?

тем же GROUP BY

P.S. если не затруднит,выложите структуру таблицы и как там данные и какие хранятся,так будет проще.(просто idser я так и не нашла на скрине,может опечатка,а с таблицей будет проще)

Опечатался, не idser, а seid.

mysqli_query($link, "SELECT sez, COUNT(*) FROM dle_post GROUP BY sez WHERE seid = '".$zaprosnewarr["seid"]."'");


Возвращает значение вообще без данных
Эли4ка
Цитата
Опечатался, не idser, а seid.

Вот поэтому давайте лучше структуру таблицы и пример хранения данных. Только кодом. Чтобы можно было загрузить и самой потестить. Хорошо?
Frost-56
Цитата (Эли4ка @ 1.09.2018 - 12:30)
Цитата
Опечатался, не idser, а seid.

Вот поэтому давайте лучше структуру таблицы и пример хранения данных. Только кодом. Чтобы можно было загрузить и самой потестить. Хорошо?
Frost-56
Цитата (Эли4ка @ 1.09.2018 - 12:30)
Цитата
Опечатался, не idser, а seid.

Вот поэтому давайте лучше структуру таблицы и пример хранения данных. Только кодом. Чтобы можно было загрузить и самой потестить. Хорошо?

Не получается?
Эли4ка
SELECT sez, COUNT(your_column)
FROM dle_post
WHERE seid = 9369610
GROUP BY sez

Попробуйте,что выведет?
Frost-56
Цитата (Эли4ка @ 1.09.2018 - 15:01)
<pre class="sh_sourceCode" rel="sql"><span class="sh_keyword">SELECT</span> sez<span class="sh_symbol">,</span> <span class="sh_function">COUNT(</span>your_column<span class="sh_symbol">)</span>
  <span class="sh_keyword">FROM</span> dle_post
<span class="sh_keyword">WHERE</span> seid <span class="sh_symbol">=</span> <span class="sh_number">9369610</span>
<span class="sh_keyword">GROUP BY</span> sez</pre>
Попробуйте,что выведет?

$zaprosnew = mysqli_query($link, "SELECT * FROM dle_post WHERE id = '".$_REQUEST['newsid']."'");
$zaprosnewarr = mysqli_fetch_array($zaprosnew);
//Получим количество сезонов
$vivodsez = mysqli_query($link, "SELECT sez, COUNT(sez) FROM dle_post WHERE seid = '".$zaprosnewarr['seid']."' GROUP BY sez");
print_r($vivodsez);



Вывел

mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 1 [type] => 0 )


Все отлично. Правда интересно почему NULL записи запрос не засунул в отдельную группу
Как тепреь по такому же принципу зная текущий сезон подсчитать количество серий в сезоне?

Делаю так:

$vivodser = mysqli_query($link, "SELECT ser, COUNT(ser) FROM dle_post WHERE sez = '".$zaprosnewarr['sez']."'");
print_r($vivodser);


Но получаю вместо 6 серий:

mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 1 [type] => 0 )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.