powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как внедрить в запрос несколько разных COUNT
17 сообщений из 17, страница 1 из 1
Как внедрить в запрос несколько разных COUNT
    #33392309
martini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понимаю, что главная ошибка у мня в ДНК, но мне очень нужно прикрутить эти COUNT's к запросу, чтобы по ним делать сортировку. Поможите а?

Первый запрос чинно выводит ожидаемую одну строку. Второй не дает никакой ошибки, но выводит 0 строк, в моем понимании - не срабатывает.

РАБОТАЕТ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SELECT
fusion_fifa_comands.id,
fusion_fifa_comands.name,
fusion_fifa_comands.user_id,
fusion_fifa_comands.seria_id,
fusion_fifa_comands.group_id,
fusion_users.user_name,
fusion_fifa_series.name AS s_name,
fusion_fifa_groups.name AS g_name,
fusion_fifa_groups.type AS g_type,
SUM(fusion_fifa_games.rating) AS rating,
SUM(fusion_fifa_games.rez1) AS zab,
SUM(fusion_fifa_games.rez2) AS prop
FROM fusion_fifa_comands
LEFT JOIN fusion_users
ON fusion_users.user_id = fusion_fifa_comands.user_id
LEFT JOIN fusion_fifa_series
ON fusion_fifa_series.id = fusion_fifa_comands.seria_id
LEFT JOIN fusion_fifa_groups
ON fusion_fifa_groups.id = fusion_fifa_comands.group_id
LEFT JOIN fusion_fifa_games
ON fusion_fifa_games.you = fusion_fifa_comands.id
WHERE fusion_fifa_comands.id='2'
GROUP BY fusion_fifa_comands.id
ORDER BY rating DESC

НЕ РАБОТАЕТ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SELECT
fusion_fifa_comands.id,
fusion_fifa_comands.name,
fusion_fifa_comands.user_id,
fusion_fifa_comands.seria_id,
fusion_fifa_comands.group_id,
fusion_users.user_name,
fusion_fifa_series.name AS s_name,
fusion_fifa_groups.name AS g_name,
fusion_fifa_groups.type AS g_type,
SUM(fusion_fifa_games.rating) AS rating,
SUM(fusion_fifa_games.rez1) AS zab,
SUM(fusion_fifa_games.rez2) AS prop,
COUNT(games1.id) AS games,
COUNT(games2.id) AS win,
COUNT(games3.id) AS loose,
COUNT(games4.id) AS eqv
FROM fusion_fifa_comands
LEFT JOIN fusion_users
ON fusion_users.user_id = fusion_fifa_comands.user_id
LEFT JOIN fusion_fifa_series
ON fusion_fifa_series.id = fusion_fifa_comands.seria_id
LEFT JOIN fusion_fifa_groups
ON fusion_fifa_groups.id = fusion_fifa_comands.group_id
LEFT JOIN fusion_fifa_games
ON fusion_fifa_games.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games1
ON games1.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games2
ON games2.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games3
ON games3.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games4
ON games4.you = fusion_fifa_comands.id
WHERE fusion_fifa_comands.id='2'
AND games2.rez1 > games2.rez2 
AND games3.rez1 < games3.rez2 
AND games4.rez1 = games4.rez2 
GROUP BY fusion_fifa_comands.id
ORDER BY rating DESC
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33392346
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что, если саунты вырезать, начинает выводить не ноль строк?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33392376
martini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да, первый запрос без каунтов (и без дополнительных обращений к таблице games и без соответсвующих условий для этих поименованиых "ипостасей") выводит, как я и написал - вполне ожидаемую одну строку.
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33392526
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я про второй запрос. Если из второго саунты вырезать.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33392544
martini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда все равно 0 строк:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SELECT
fusion_fifa_comands.id,
fusion_fifa_comands.name,
fusion_fifa_comands.user_id,
fusion_fifa_comands.seria_id,
fusion_fifa_comands.group_id,
fusion_users.user_name,
fusion_fifa_series.name AS s_name,
fusion_fifa_groups.name AS g_name,
fusion_fifa_groups.type AS g_type,
SUM(fusion_fifa_games.rating) AS rating,
SUM(fusion_fifa_games.rez1) AS zab,
SUM(fusion_fifa_games.rez2) AS prop
FROM fusion_fifa_comands
LEFT JOIN fusion_users
ON fusion_users.user_id = fusion_fifa_comands.user_id
LEFT JOIN fusion_fifa_series
ON fusion_fifa_series.id = fusion_fifa_comands.seria_id
LEFT JOIN fusion_fifa_groups
ON fusion_fifa_groups.id = fusion_fifa_comands.group_id
LEFT JOIN fusion_fifa_games
ON fusion_fifa_games.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games1
ON games1.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games2
ON games2.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games3
ON games3.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games4
ON games4.you = fusion_fifa_comands.id
WHERE fusion_fifa_comands.id='2'
AND games2.rez1 > games2.rez2 
AND games3.rez1 < games3.rez2 
AND games4.rez1 = games4.rez2 
GROUP BY fusion_fifa_comands.id
ORDER BY rating DESC
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33392657
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтд. Каунты не виноваты :)
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33392721
martini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не обвиняю каунты. Я спрашиваю гуру КАК мне получить то что я хочу. Хорошо, что они не виноваты, ибо они мне как раз и нужны. Но результат нулевой :( А хотелось бы строчечку получить.
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33392866
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно считать не каунты, а понимать, как сервер делает объединения таблиц, чтобы знать, что считать.

В общем смысле твой запрос сводится к произведению строк всех таблиц объединенных левым объединением с таблицей fusion_fifa_comands

Поэтому саунты будут на некоторых ветках задвоены или затроены.

Пользуй конструкцию count(distinct(<имя_таблицы>.<ключ>)) для посдсчета количества строк, но сумму таким образом лучше не считать, т.к. бока в реальной работе бедут.
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33392928
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сначала получи строчечку, а уж потом кауны будем считать, ок?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33393001
martini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Валентин КНужно считать не каунты, а понимать, как сервер делает объединения таблиц, чтобы знать, что считать.

В общем смысле твой запрос сводится к произведению строк всех таблиц объединенных левым объединением с таблицей fusion_fifa_comands

Поэтому саунты будут на некоторых ветках задвоены или затроены.

Пользуй конструкцию count(distinct(<имя_таблицы>.<ключ>)) для посдсчета количества строк, но сумму таким образом лучше не считать, т.к. бока в реальной работе бедут.

К сумам претензий в моем случае нет. В первом варианте запроса все выводится как надоть...

Во втором случае нужон именон количество строк, удовлетвоаряющих критериям, описаным в хвосте запроса для алиасов таблицы games.

Попробую вставить этот дистинкт ...
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33393010
martini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoсначала получи строчечку, а уж потом кауны будем считать, ок?

Строчку я получаю первым запросом удачно. Вторым неудачно. ВЕСЬ МОЙ ВОПРОС и заключен в том, где же косяк второго запроса. Как сделать, чтобы он получал ту же строчку, только обогащенную этими самыми каунтами.

Мне нужен от второго запроса результат имеющий на 4 колонки больше, чем имеет результат первого. Я не знаю как это сделать.

Так что, получение "строчечки" и есть предмет моего вопроса.
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33393045
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
значит, у тебя нет строчечек, удовлетворяющих условиям
Код: plaintext
1.
2.
AND games2.rez1 > games2.rez2
AND games3.rez1 < games3.rez2
AND games4.rez1 = games4.rez2
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33393053
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, если один из этих резов при объединении получается нуллом, все твои строчечки летят к чертям :)
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33393070
martini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
distinct не помог.

Строчки вроде есть... Может быть не все одновременно. В этом дело да?

NULLов нет точно...

А как при отсутствии строчки по данному условию получить не отсутствие строки на выходе, а просто 0 в колонке?

Я чувствую, что уже понят :) Спасибо. Последний рывок к прозрению....
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33393525
martini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы думаете, я опечатался и на самом деле я "понял"?
НЕТ! :( Не так.
Мне просто показалось, что МЕНЯ начали понимать. А проблема никуда так и не делась :( Мне по-прежнему нужна пощь...
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33393653
max(id)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй такой запрос :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SELECT
  fusion_fifa_comands.id,
  fusion_fifa_comands.name,
  fusion_fifa_comands.user_id,
  fusion_fifa_comands.seria_id,
  fusion_fifa_comands.group_id,
  fusion_users.user_name,
  fusion_fifa_series.name AS s_name,
  fusion_fifa_groups.name AS g_name,
  fusion_fifa_groups.type AS g_type,
  SUM(fusion_fifa_games.rating) AS rating,
  SUM(fusion_fifa_games.rez1) AS zab,
  SUM(fusion_fifa_games.rez2) AS prop,
  COUNT(games1.id) AS games,
  COUNT(games2.id) AS win,
  COUNT(games3.id) AS loose,
  COUNT(games4.id) AS eqv
FROM fusion_fifa_comands
LEFT JOIN fusion_users
  ON fusion_users.user_id = fusion_fifa_comands.user_id
LEFT JOIN fusion_fifa_series
  ON fusion_fifa_series.id = fusion_fifa_comands.seria_id
LEFT JOIN fusion_fifa_groups
  ON fusion_fifa_groups.id = fusion_fifa_comands.group_id
LEFT JOIN fusion_fifa_games
  ON fusion_fifa_games.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games1
  ON games1.you = fusion_fifa_comands.id
LEFT JOIN fusion_fifa_games AS games2
  ON games2.you = fusion_fifa_comands.id
  AND games2.rez1 > games2.rez2 
LEFT JOIN fusion_fifa_games AS games3
  ON games3.you = fusion_fifa_comands.id
  AND games3.rez1 < games3.rez2 
LEFT JOIN fusion_fifa_games AS games4
  ON games4.you = fusion_fifa_comands.id
  AND games4.rez1 = games4.rez2 
WHERE fusion_fifa_comands.id='2'
GROUP BY fusion_fifa_comands.id
ORDER BY rating DESC
...
Рейтинг: 0 / 0
Как внедрить в запрос несколько разных COUNT
    #33394020
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
martiniNULLов нет точно...не там ищешь.

martiniА как при отсутствии строчки по данному условию получить не отсутствие строки на выходе, а просто 0 в колонке?есть мнение, что можно формализовать любую сколь угодно навороченную логику, состоящую из операций И и ИЛИ. Это так, для развития.
Код: plaintext
1.
2.
AND (games2.rez1 isnull OR games2.rez2 isnull OR games2.rez1 > games2.rez2)
AND (games3.rez1 isnull OR games3.rez2 isnull OR games3.rez1 < games3.rez2)
AND (games4.rez1 isnull OR games4.rez2 isnull OR games4.rez1 = games4.rez2)
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как внедрить в запрос несколько разных COUNT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]