Перейти к содержанию

SQL выборки


Habilis

Рекомендуемые сообщения

Чет форум приуныл к тому моменту как школы должны начяться.....

Карочь,

Хабиля решил открыть аттракцион невиданной щедрости

Вы Хабиле идеи Интерессных и Актуальных для Админа выборок из базы данных

А Хабиля вам код запроса (Уровень знаний Хабили в SQL всего на всего, гуру)

так-что, можно запрашивать выборки любой сложности, с любым колличеством Юнионов, любых Джойнов и любых Пивотов (Но, Если выборка слишком сложная, не факт что Хабиля ее релизнет :ph34r:)

 

Пока как аттракцион не виданной щедрасти вот вам простенькая выборка по посоледним введенным 200 @коммандам 

Комманды начинающиеся на @reload и @emotion игнорируються

SELECT `atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command` 
FROM `atcommandlog` 
WHERE `command` NOT LIKE "@emotion%" AND `command` NOT LIKE "@reload%" 
ORDER BY `atcommand_id` DESC 
LIMIT 200;

 

Если у вас кароч Хай-рейт и вам не интересно смотреть на перемещения игроков можете добавить еще несколько критерий 

`command` NOT LIKE "@go %" AND `command` NOT LIKE "@jump%" AND `command` NOT LIKE "@warp%" 

Или, наоборот можете отслеживать только определенные комманды

WHERE `command` LIKE "@item%" 

 

Кароч скажите по опыту чего лучше всего отслеживать в коммандах?

 

Хабиля из этой выборки сделает СКЛ представление для своего дашборда...

 

Дальше Хабиля сделает еще 1 простенькую выборку по игровому Чяту, поиск по ключевым словам

".com, .net, .org ,.ru, http://, www., ..."

Чтобы если-чо игрок имел потом долгий содержительный разговор с Хабилей о рекламе...

Изменено пользователем Habilis
Ссылка на комментарий
Поделиться на другие сайты

Ловите кароч апдейтанную версию Выборки

SELECT 
  ac.`atcommand_date`
  ,ac.`account_id`
  ,ac.`char_id`
  ,ac.`char_name`
  ,l.`group_id`
  ,ac.`map`
  ,ac.`command` 
FROM `atcommandlog` ac
LEFT JOIN `login` l ON l.`account_id` = ac.`account_id`
WHERE
	l.`group_id` >= 30
	AND ac.`command` NOT LIKE "@emotion%" 
	AND ac.`command` NOT LIKE "@reload%"
	AND ac.`command` NOT LIKE "@refresh%"
	AND ac.`command` NOT LIKE "@go %"
	AND ac.`command` NOT LIKE "@jump%"
	AND ac.`command` NOT LIKE "@warp%" 
ORDER BY ac.`atcommand_id` DESC 
LIMIT 200;

Выбираються комманды введенные теми у кого ГМ уровень 30 и выше (Чтобы тот трэш и угар что обычные игроки генерят отфильтровать)

Ссылка на комментарий
Поделиться на другие сайты

Иногда полезно проверять наличие некоторых предметов у игроков и их количество, а иногда даже лидеров по количеству этого предмета (а так же н складе, в почте, на аукционе, в телеге и бог весть где) в ги кафре в смысле). Хотя я никогда ничего особенного не находила, все же может некоторым пригодиться) Это не особо сложно, но муторно (для меня)


 

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, Elmiria сказал:

Иногда полезно проверять наличие некоторых предметов у игроков и их количество, а иногда даже лидеров по количеству этого предмета (а так же н складе, в почте, на аукционе, в телеге и бог весть где) в ги кафре в смысле). Хотя я никогда ничего особенного не находила, все же может некоторым пригодиться) Это не особо сложно, но муторно (для меня)


 

Даже не муторно...

Муторность начинаеться когда ищеш карты (Карты могут быть в экипировке)

по этому для карт Хабиля сделает наверное отдельную выборку (там чуть больше по*аться придеться)

 

А так не должно быть сильно муторно или сложно...

Ссылка на комментарий
Поделиться на другие сайты

Лови первую версию 

дома кароч доработаю выборку

DELIMITER //
set @nameid = 601;


SELECT 
	c.account_id
	,c.name
	,inv.inventory_amnt
	,crt.cart_amnt
	,mail.mail_amnt
	,stor.storage_amnt
	,(ifnull(inv.inventory_amnt, 0) + ifnull(crt.cart_amnt, 0) + ifnull(mail.mail_amnt, 0) + ifnull(stor.storage_amnt, 0)) AS tot_amnt
FROM `char` c
LEFT JOIN (SELECT char_id, SUM(amount) AS inventory_amnt FROM inventory WHERE nameid=@nameid GROUP BY char_id) inv
	ON inv.char_id=c.char_id
LEFT JOIN (SELECT char_id, SUM(amount) AS cart_amnt FROM cart_inventory WHERE nameid=@nameid GROUP BY char_id) crt
	ON crt.char_id=c.char_id
LEFT JOIN (SELECT dest_id AS char_id, SUM(amount) AS mail_amnt FROM mail WHERE nameid=@nameid GROUP BY dest_id) mail
	ON mail.char_id=c.char_id
LEFT JOIN (SELECT account_id, SUM(amount) AS storage_amnt FROM storage WHERE nameid=@nameid GROUP BY account_id) stor
	ON stor.account_id=c.account_id
	
ORDER BY tot_amnt DESC;
	
//
DELIMITER ;

 

пример того что выбираеться

+------------+------------+----------------+-----------+-----------+--------------+----------+
| account_id | name       | inventory_amnt | cart_amnt | mail_amnt | storage_amnt | tot_amnt |
+------------+------------+----------------+-----------+-----------+--------------+----------+
|    2000002 | Wiwrtas    |             19 |      NULL |      NULL |         NULL |       19 |
|    2000002 | Strelok    |              9 |      NULL |      NULL |         NULL |        9 |
|    2000000 | test       |           NULL |      NULL |      NULL |         NULL |        0 |
|    2000002 | aaaaa      |           NULL |      NULL |      NULL |         NULL |        0 |
|    2000003 | ladyAdA    |           NULL |      NULL |      NULL |         NULL |        0 |
|    2000000 | toto       |           NULL |      NULL |      NULL |         NULL |        0 |
|    2000000 | Habilis    |           NULL |      NULL |      NULL |         NULL |        0 |
|    2000001 | tata       |           NULL |      NULL |      NULL |         NULL |        0 |
|    2000002 | asdasfasfd |           NULL |      NULL |      NULL |         NULL |        0 |
|    2000004 | tatatatata |           NULL |      NULL |      NULL |         NULL |        0 |
+------------+------------+----------------+-----------+-----------+--------------+----------+
10 rows in set (0.01 sec)

 

Выбираеться сумма предмета 601 (крыло мухи) в инвентаре, тележке, почте, кафре (оно по акку а не по персонажу по этому у всех персонажей под 1 акком там одинаковое значение) и тотал, по нему определяю того у кого больше всего предмета...

 

С ги стореджем логика та-же только выборка меньше... я не стал вкручивать по тому что Гильдия это воабще отдельная сущьность связаннае кароч с множеством Чаров...

Изменено пользователем Habilis
Ссылка на комментарий
Поделиться на другие сайты

Потрясающе) Когда учишь язык по аналогии того что видишь в ро - это просто волшебство) Да, куда мне со своими знаниями лезть в сервостроение)

Ссылка на комментарий
Поделиться на другие сайты

Да ладно.. не надо на себя наговаривать. Если что-то совсем нев*нно сложное, можно тут, у пачанов спросить, они норм отвечают не смотря на то что говорят всякие школьники..(что их там обидили, оскорбили, затроллили, не ответили на вопросик)

А еще можно на Герке спросить, там тоже норм пачяны и норм отвечают только они мутные карочь, по Русски не понимают...

А на рАфине Хабилю в угол поставили Рид-онли за плохое поведение кинули, там хз какие пачяны.. тоже норм наверное есть.

 

Глвавное, кароч, не бояться и не здаваться, и не отступать кароч!.....

Изменено пользователем Habilis
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика