Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2022, 13:32   #1
zefirok
Новичок
Джуниор
 
Регистрация: 28.09.2022
Сообщений: 2
По умолчанию Сломали запрос :-(

Всем привет! Я учусь на С++ программиста и для хобби копаюсь в одной игрушке онлайновой.
В игрушке есть ПвП (игрок против игрока), хотел разделить подсчет убийств на простые (FRAG) и убийства на Арене (FRAG_ARENA) и SQL запрос сломался, ничего не выдает.

В SQL понимаю только базовые запросы, так что такой запрос для меня как Теория Струн. Помогите пожалуйста.

Изначальный запрос(рабочий):

query << "SELECT `scores`.`guid`, `c`.`level`, `c`.`account`, `c`.`RankPoints`, `c`.`HighestRank`, SUM(`kpoints`), SUM(`fpoints`), SUM(`rewpoints`) FROM"
"("
" SELECT `guid` AS `guid`, COUNT(*) AS `kpoints`, 0 AS `fpoints`, SUM(`rewpoints`) AS `cp` FROM `character_kill_rewpoints` WHERE `type` = " << FRAG <<
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, COUNT(*) AS `fpoints`, 0 AS `rewpoints` FROM `character_kill_rewpoints` WHERE `type` = " << FAIL <<
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, 0 AS `fpoints`, SUM(`rewpoints`) AS `cp` FROM `character_kill_rewpoints` WHERE `type` NOT IN (" << FRAG << ", " << FAIL << ")"
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, 0 AS `fpoints`, 0 AS `rewpoints` FROM `characters` WHERE `RankPoints` > 0"
") AS `scores` INNER JOIN `characters` AS `c` ON `scores`.`guid` = `c`.`guid` GROUP BY `guid` ORDER BY `guid` ";



Мой запрос(добавил FRAG_ARENA):

query << "SELECT `scores`.`guid`, `c`.`level`, `c`.`account`, `c`.`RankPoints`, `c`.`HighestRank`, SUM(`kpoints`), SUM(`fpoints`), SUM(`rewpoints`) FROM"
"("
" SELECT `guid` AS `guid`, COUNT(*) AS `kpoints`, 0 AS `fpoints`, SUM(`rewpoints`) AS `cp` FROM `character_kill_rewpoints` WHERE `type` = (" << FRAG << ", " << FRAG_ARENA << ")"
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, COUNT(*) AS `fpoints`, 0 AS `rewpoints` FROM `character_kill_rewpoints` WHERE `type` = " << FAIL <<
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, 0 AS `fpoints`, SUM(`rewpoints`) AS `cp` FROM `character_kill_rewpoints` WHERE `type` NOT IN (" << FRAG << ", " << FRAG_ARENA << ", " << FAIL << ")"
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, 0 AS `fpoints`, 0 AS `rewpoints` FROM `characters` WHERE `RankPoints` > 0"
") AS `scores` INNER JOIN `characters` AS `c` ON `scores`.`guid` = `c`.`guid` GROUP BY `guid` ORDER BY `guid` ";



Заранее огромное спасибо!!!
zefirok вне форума Ответить с цитированием
Старый 28.09.2022, 13:52   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Замените равнество на in
p51x вне форума Ответить с цитированием
Старый 28.09.2022, 20:03   #3
zefirok
Новичок
Джуниор
 
Регистрация: 28.09.2022
Сообщений: 2
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Замените равнество на in
Уточню, так?

query << "SELECT `scores`.`guid`, `c`.`level`, `c`.`account`, `c`.`RankPoints`, `c`.`HighestRank`, SUM(`kpoints`), SUM(`fpoints`), SUM(`rewpoints`) FROM"
"("
" SELECT `guid` AS `guid`, COUNT(*) AS `kpoints`, 0 AS `fpoints`, SUM(`rewpoints`) AS `cp` FROM `character_kill_rewpoints` WHERE `type` IN (" << FRAG << ", " << FRAG_ARENA << ")"
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, COUNT(*) AS `fpoints`, 0 AS `rewpoints` FROM `character_kill_rewpoints` WHERE `type` = " << FAIL <<
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, 0 AS `fpoints`, SUM(`rewpoints`) AS `cp` FROM `character_kill_rewpoints` WHERE `type` NOT IN (" << FRAG << ", " << FRAG_ARENA << ", " << FAIL << ")"
" AND (`date` BETWEEN " << weekBeginDay << " AND " << weekEndDay << ") GROUP BY `guid`"
" UNION"
" SELECT `guid` AS `guid`, 0 AS `kpoints`, 0 AS `fpoints`, 0 AS `rewpoints` FROM `characters` WHERE `RankPoints` > 0"
") AS `scores` INNER JOIN `characters` AS `c` ON `scores`.`guid` = `c`.`guid` GROUP BY `guid` ORDER BY `guid` ";
zefirok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
приложение Weather, делаю запрос оп всем параметрам, которые были указанны на сайте, но запрос не выполняется MustafaDzhemadin Помощь студентам 2 19.11.2019 00:14
SQL запрос в php - запрос в базу данных так, чтобы еще возвращалось значение, сколько строк затронуто volni PHP 29 16.09.2019 11:49
Запрос на выборку и отчет на этот запрос Camelot_2012 Microsoft Office Access 2 21.12.2011 16:48
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09