我有一个朋友和一个我正在帮忙的论坛。所述论坛还有一个shoutbox,用于存储被禁用的用户ID(整数),禁止它们的UNIX以及在SQL表中被(userid / integer)禁止的用户数据。该数据位于shoutbox
表中。我正在尝试创建一个页面,论坛版主可以查看被禁用的用户,他们被禁止的用户以及被禁止的用户。
假设表users
是一个表,其中有一列名为chat_banned
的数据存储变量,具体取决于用户是否被禁止1
被禁止和0
未被禁止。此数据位于两个不同的表格中,其中shoutbox
包含有关用户何时被禁止的信息,以及被禁用的用户ID和执行禁止的用户的整数以及users
如果他们实际被禁止的话。我不能简单地打印shoutbox
表的结果的原因是因为用户可能已被取消禁止,并且检查他或她未被禁止的唯一方法是检查变量chat_banned
表的users
列。
是否有任何超级有效的方法来执行以下操作:
userid
选择的当前数据为username
和users
。我已经有了一个基本的页面设置,所以如果你想查看它的示例基本功能,我很乐意在这里发布,看看有没有办法简单地编辑我已建立的页面有效地完成这个。
谢谢,Dizzy。
编辑:我想我会更有效地列出哪些表有什么信息它是什么。你走了:
users
chat_banned
(1表示禁止,0表示未禁止)shoutbox
time
(执行命令时的UNIX时间戳)command
(三个可能命令的命令日志,ban
用于禁止用户,unban
用于取消用户,edit
用于编辑呼叫userid
(以整数形式执行命令的主持人的userid
)comment
(被禁止的用户userid
的整数)答案 0 :(得分:0)
从我的头脑中,您可能希望使用子查询来搜索实际被禁用的用户,并使用这些user_id来从shoutbox-database中获取所有信息。
SELECT * FROM shoutbox WHERE comment IN (SELECT user_id FROM users WHERE chat_banned = 1)
答案 1 :(得分:0)
此查询仅显示仍被禁止的用户的禁止活动:
SELECT u.username, s.time, s.command, bu.username AS moderator
FROM shoutbox s
INNER JOIN users u
ON u.userid = s.comment
INNER JOIN users bu
ON bu.userid = s.userid
WHERE u.chatbanned = 1
AND s.command = 'ban'
ORDER BY s.time DESC