好吧,我很難用良好的語言來解釋這一點,但我從我的數據庫中的表中選擇所有默認頭像,其中包含所有頭像,不管是否隱藏..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