2010-02-12 46 views
0

我目前正試圖建立一個由用戶半建的導航,基本上用戶有一個主導航,其中如果他們點擊一個類別名稱在該類別的頁面上創建一個塊。如果他們再次點擊相同的鏈接,該頁面將從頁面中移除,網站將設置爲記住用戶在上次瀏覽時選擇了哪些塊,我的問題是讓菜單正確顯示。用戶建立的導航幫助

菜單的工作方式是,主導航鏈接構建和當用戶點擊該鏈接被賦予一類的「拯救」的鏈接,當他們再次單擊它的類「拯救」被刪除。

當用戶返回到站點時,如果有相關的塊正在顯示,主導航鏈接應該保存該類。

我需要做的是找到一種方式來獲得的主要資產淨值的所有環節從數據庫中,並檢查他們是否通過鏈接在他們的最後VIST用戶已經選擇。

數據庫結構是這樣的,

THIS IS表中包含MY PRIMARY LINKS

CREATE TABLE categoryTable (
    categoryId int(11) NOT NULL auto_increment, 
    categoryTitle varchar(25) NOT NULL, 
    categoryAbstract varchar(60) NOT NULL, 
    categorySlug varchar(25) NOT NULL, 
    categoryIsSpecial int(1) NOT NULL, 
    categoryOnline int(1) NOT NULL, 
    categoryDateCreated int(10) NOT NULL, 
    dashboardUserId int(11) NOT NULL, 
    PRIMARY KEY (categoryId) 
) 

並且這是表中所保存的信息是什麼BLOCKS該用戶打開

CREATE TABLE userMenuTable (
    menuEntryId int(11) NOT NULL auto_increment, 
    categoryId int(11) NOT NULL, 
    cookieId varchar(32) NOT NULL, 
    PRIMARY KEY (menuEntryId), 
    KEY categoryId (categoryId,cookieId), 
    KEY cookieId (cookieId) 
) 

我試過這個查詢來獲取所有不在userMenuTable中的類別,但它不起作用,

SELECT * 
FROM `categoryTable` 
WHERE `categoryId` 
NOT IN (
SELECT `userMenuTable`.`categoryId` 
FROM (`userMenuTable`) 
LEFT JOIN `categoryTable` ON 
`categoryTable`.`categoryId` = `userMenuTable`.`categoryId` 
WHERE `userMenuTable`.`cookieId` = '{$cookieId}') 

我明明做錯事有誰能夠闡明我的問題,任何光線?

回答

1

你爲什麼使用上面查詢NOT IN?看來IN會更合適。總之,這裏的應該工作更簡單/更高效的查詢:

SELECT cat.* 
FROM userMenuTable user 
LEFT JOIN categoryTable cat ON cat.categoryId = user.categoryId 
WHERE user.cookieId = '{$cookieId}' 
+0

也許我沒有解釋這很好,我需要能夠檢索尚未保存以及鏈接這可能 – Udders 2010-02-12 16:20:56

+0

我不我想我明白了。你想要所有的鏈接,並且你想知道用戶是否「保存」了他們? – eliah 2010-02-12 16:47:51