select count(grcm.acgrcmid) -- если >= 1 то разрешено, хотя по идее больше 1 быть
-- не должно - структура базы такова, я надеюсь :)
into Result
from accgrcomm grcm, accgracc acgr
where
grcm.accgr = acgr.accgr
and grcm.allowed >= 1 -- выбираем группы для которых разрешено
and grcm.allowed is not null -- выбираем группы для которых разрешено
and grcm.comm = ncid
select c.cid -- выбираем команду
from commands c
where c.name = vcommand)
and grcm.chnl in (
select ch.chid -- выбираем канал
from channels ch
where ch.channel = vchannel
and ch.ntwrk = nnetwork
or ch.chid = 1
or ch.chid = 2)
and acgr.acc = naccid( -- выбираем группу акаунтов
select ac.accid -- выбираем аккаунт
from accounts ac
where ( ac.locked = 0 -- аккаунт не зеблокирован
or ac.locked is null)
and ac.logined >= 1 -- юзер залогинен
and ac.logined is not null
and ac.logusr = (
select u.usid from users u -- выбираем юзера
where u.nick = (
select n.nckid
from nicks n
where n.nick = vnick)
and u.usr = vusr
and u.host = vhost
and u.ntwork = nnetwork));