Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询:提取除已保存类别之外的所有其他类别_Mysql - Fatal编程技术网

MySQL查询:提取除已保存类别之外的所有其他类别

MySQL查询:提取除已保存类别之外的所有其他类别,mysql,Mysql,我真的需要一些帮助来形成一个我无法解决的查询。在我的网站上,我有一个系统,希望能记住用户上次访问网站时所做的一些选择 在站点上,用户可以选择下次访问站点时希望阅读的内容类别。该设置将被记住,但菜单的显示应略有不同。它应该显示除已保存类别之外的所有其他类别 如果我有这些分类 博客 灵感 案例研究 用户保存了博客,下次他们来到网站时,分类列表应该是 灵感 案例研究 如何从数据库中提取这些数据 目前,我有一个通过唯一cookie id标识用户的表: CREATE TABLE IF NOT EXISTS

我真的需要一些帮助来形成一个我无法解决的查询。在我的网站上,我有一个系统,希望能记住用户上次访问网站时所做的一些选择

在站点上,用户可以选择下次访问站点时希望阅读的内容类别。该设置将被记住,但菜单的显示应略有不同。它应该显示除已保存类别之外的所有其他类别

如果我有这些分类

  • 博客
  • 灵感
  • 案例研究
  • 用户保存了博客,下次他们来到网站时,分类列表应该是

  • 灵感
  • 案例研究
  • 如何从数据库中提取这些数据

    目前,我有一个通过唯一cookie id标识用户的表:

    CREATE TABLE IF NOT EXISTS `cookieTable` (
      `cookieEntryId` int(11) NOT NULL AUTO_INCREMENT,
      `cookieId` varchar(32) NOT NULL,
      `expirationDate` int(10) NOT NULL,
      PRIMARY KEY (`cookieEntryId`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
    
    我有一张分类表

        CREATE TABLE IF NOT EXISTS `categoryTable` (
      `categoryId` int(11) NOT NULL AUTO_INCREMENT,
      `categoryTitle` varchar(25) NOT NULL,
      `categoryAbstract` varchar(150) NOT NULL,
      `categorySlug` varchar(25) NOT NULL,
      `categoryIsSpecial` int(1) DEFAULT NULL,
      `categoryOnline` int(1) DEFAULT NULL,
      `dashboardUserId` int(11) NOT NULL,
      `categoryDateCreated` int(10) NOT NULL,
      PRIMARY KEY (`categoryId`),
      KEY `dashboardUserId` (`dashboardUserId`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    
    我有一个表,它保存了用户保存的类别

        CREATE TABLE IF NOT EXISTS `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`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6;
    

    假设用户的cookieId保持不变,则以下查询应获取用户尚未保存的类别。如果没有,您应该将userId放入userMenuTable。只需将UserScookeId替换为实际的cookie ID即可

    SELECT * FROM categoryTable WHERE categoryId not in 
    (SELECT categoryId FROM userMenuTable WHERE cookieId = 'USERSCOOKIEID') as x