好吧,我很难用良好的语言来解释这一点,但我从我的数据库中的表中选择所有默认头像,其中包含所有头像,不管是否隐藏..MySQL只在数据存在于第二个表
forum_title中的隐藏字段默认为0(对每个用户都可用),有些值为1(用户将不得不解锁它,它不会自动提供)。 无论如何,当他们找到头像时,它会被插入到user_title中。
所以user_title跟踪的user_is和title_id上的...
但我希望将所有用户显示默认的化身连同他们所隐藏的,他们解锁.. 的SQL运行正常,直到我添加了WHERE子句因为第一个表没有user_id列......我只想说WHERE user_title.user_id = $ _SESSION ['userid']如果他们之前已经解锁了化身(显然或者第二个表中没有数据)我离开的原因加入了它)
这是使用CodeIgniter,但我会发布MySQL和CodeIgniter版本,所以人们可以帮助我!
$this->db->select('id, phrase');
$this->db->from('forum_title');
$this->db->join('user_title', 'title_id = id', 'left');
$this->db->where('user_title.user_id', $this->session->userdata('user_id'));
$this->db->order_by('hidden');
然后在这里是MySQL:
SELECT id, phrase
FROM forum_title
LEFT JOIN user_title ON title_id = id
WHERE user_title.user_id = $_SESSION['user_id']
ORDER BY hidden;
谢谢!
SQL为FORUM_TITLE表:
CREATE TABLE IF NOT EXISTS `forum_title` (
`id` tinyint(3) NOT NULL AUTO_INCREMENT,
`phrase` varchar(50) NOT NULL,
`hidden` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
INSERT INTO `forum_title` (`id`, `phrase`, `hidden`) VALUES
(1, 'OMGITSATITLE', 0),
(2, 'DStable Addict', 0),
(3, 'Randomnezz', 0),
(4, 'I Eat Hair...', 0),
(5, 'IMMA STAFFY', 1);
SQL为user_title表:
CREATE TABLE IF NOT EXISTS `user_title` (
`user_id` bigint(20) NOT NULL,
`title_id` tinyint(3) NOT NULL,
PRIMARY KEY (`user_id`,`title_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
现在我想要的结果:
总是显示为默认(隐藏= 0)的标题,但是显示hidden = 1以及如果他们已经解锁了,它将在user_title表中,如果他们已经解锁它。
你有没有考虑过联盟? – Omar