2013-01-25 27 views
0

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

+0

你有沒有考慮過聯盟? – Omar

回答

0

你是哪裏聲明將結果限制爲與用戶ID匹配的結果,則需要指定其他結果。將以下內容添加到您的查詢中,如果我理解您的權利,那麼應該可以解決問題。

$this->db->or_where('hidden', 0); 
0
SELECT id 
    , phrase 
    FROM forum_title 
    LEFT 
    JOIN user_title 
    ON title_id = id 
    AND user_title.user_id = $_SESSION['user_id'] 
ORDER 
    BY hidden; 
+0

這是讓東西來顯示,但user_id(4,我)還沒有發現任何解鎖的化身,它仍然拉動隱藏的,即使他們沒有找到它們。所以我把title_id = id和user_id不是空和user_id = $ _SESSION ['user_id'],但它仍然拉動它..有反正只顯示那些隱藏標記爲1如果他們在user_title表中找到? – Peanut

+0

呃,什麼?考慮爲上述提供DDL(CREATE和INSERT)以及預期/期望的結果。 – Strawberry

+0

增加了很多更多的細節(:謝謝! – Peanut

相關問題