繁体   English   中英

Zend_Db_Select选择不在特定表中的值

[英]Zend_Db_Select Select values not in specific table

我已经用Google搜索了我的问题并阅读了很多论坛帖子,但是我还没有找到我所需要的答案,希望这里有人可以帮助我。

对于我正在构建的项目,我设置了以下3个表; 用户,项目和projectUsers。

我已经建立了一个表单,可以通过将userID和projectID保存到projectUsers表中来添加用户到项目,到目前为止没有什么特别的。 该表单包含一个带有用户ID的select元素,该用户ID可以连接到projectID(隐藏字段)。

该表单元素填充有使用Zend_Db_Select设置的查询,它从users表中选择所有用户并将其添加到select中。 但是,我想过滤该结果,以便它排除已经添加到该特定项目的所有用户。

简短版本:我有一个select元素,其中的用户填充了(Zend_db_select)数据库查询中的结果集,我希望将该结果集从某些userID中删除。

有关其他参考,请参见以下表格方案:

CREATE TABLE IF NOT EXISTS `projects` (
  `projectID` int(11) NOT NULL AUTO_INCREMENT,
  `projectName` varchar(255) NOT NULL
  PRIMARY KEY (`projectID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `projectUsers` (
  `projectUserID` int(11) NOT NULL AUTO_INCREMENT,
  `projectID` int(11) NOT NULL,
  `userID` int(11) NOT NULL
  PRIMARY KEY (`projectUserID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `users` (
  `userID` int(11) NOT NULL AUTO_INCREMENT,
  `userFirstName` varchar(255) DEFAULT NULL,
  `userLastName` varchar(255) DEFAULT NULL
  PRIMARY KEY (`userID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

提前致谢!

这将选择所有尚未添加到项目中的用户,并忽略arrayOfUserIds中的用户

select()->from('users', '*')
    ->joinLeft('projectUsers', 'projectUsers.projectUserID = users.userID', null)
    ->where('projectUsers.projectID = ?', someProjectID)
    ->where('projectUserID is null')
    ->where('users.userID not in (?)', arrayOfUserIds)
    ->query()->fetchAll();

对Soica Micea ans的addint

$blackList = array(1,3,5,6); //user id which you want to exclude
$db->select()->from('users', '*')
    ->joinLeft('projectUsers', 'projectUsers.projectUserID = users.userID', null)
    ->where('projectUsers.projectID = ?', someProjectID)
    ->where('projectUserID is null')
    ->where('users.userID not in (?)', implode(',',$blackList))
    ->query()->fetchAll();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM