我有一个简单的会员系统,允许用户上传多个头像,以便他们可以设置要显示的活动头像。 如果他们不选择自定义头像,我也想默认显示头像。 我试图使用MySQL一次显示它,这是我的表的一小段:
E
到目前为止,我使用join获得了什么:
CREATE TABLE IF NOT EXISTS `members` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`custom_avatar` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
CREATE TABLE IF NOT EXISTS `avatars` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` tinyint(4) NOT NULL,
`avatar_file` varchar(255) NOT NULL,
`active` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
)
我想我离解决方案不远了,我只需要检查用户是否没有自定义头像(即:如果记录为NULL),然后显示默认头像。 这里的主要问题是,据我所知我无法在其上放一个WHERE子句,所以我无法仅获得活动的化身,这将抵消我到目前为止想要实现的目标。
有什么启发可以使用MySql在单个请求中完成此操作,还是应该进一步在PHP中进行挖掘?
编辑:
预期输出:仅在有活动头像时显示活动头像,如果没有则显示NULL。
我上面发布的查询实际上显示的是用户可能拥有的每个头像,这是我得到的输出示例:
(很抱歉,我不知道如何正确呈现结果)
如果我使用 where active = 1 之类的东西,它会过滤掉我需要弄清楚用户是否具有自定义头像的所有NULL记录。
答案 0 :(得分:0)
经过一番调查,我发现了这种解决方案,它就像一个魅力:
Sql LEFT OUTER JOIN with WHERE clause
当然,正如Ulla-Brendholdt所建议的那样,我也可以检查null,这是我的错。
答案 1 :(得分:-1)
您应该检查是否为空:
Active = 1 or avatars.user_id IS NULL