2010-02-12 52 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