Habilis

SQL выборки

7 сообщений в этой теме

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

Карочь,

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

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

А Хабиля вам код запроса (Уровень знаний Хабили в 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
0

Поделиться сообщением


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

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

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 и выше (Чтобы тот трэш и угар что обычные игроки генерят отфильтровать)

0

Поделиться сообщением


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

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


 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Elmiria сказал:

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


 

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

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

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

 

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

0

Поделиться сообщением


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

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

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

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
0

Поделиться сообщением


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

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

0

Поделиться сообщением


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

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

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

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

 

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

Изменено пользователем Habilis
1

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас