您好我想在我的数据库中选择不在另一个表中的行。如果外键行存在,我不希望表行包含在结果集中。
例如:
Group Table
Id - Title - Motto - Logo
Member Table
Id - FirstName - LastName
GroupMemberMap Table
Id - Group - Member
我希望获得未分配给组的所有成员。
任何人都知道如何使用Propel做到这一点?
答案 0 :(得分:2)
两个例子:
左连接
SELECT * FROM member m LEFT JOIN member_group mg ON mg.member_id = m.id WHERE mg.member_id IS NULL
$c = new Criteria();
$c->addJoin(MemberPeer::ID, MemberGroupPeer::MEMBER_ID, Criteria::LEFT_JOIN);
$c->add(MemberGroupPeer::MEMBER_ID, NULL, Criteria::ISNULL);
return MemberPeer::doSelect($c);
子查询
SELECT * FROM member m WHERE id NOT IN(SELECT DISTINCT(member_id)FROM member_group)
$c = new Criteria();
$subQuery = sprintf('SELECT DISTINCT(%s) FROM %s', MemberGroupPeer::MEMBER_ID, MemberGroupPeer::TABLE_NAME);
$c->add(MemberPeer::ID, MemberPeer::ID . ' NOT IN (' . $subQuery . ')', Criteria::CUSTOM);
return MemberPeer::doSelect($c);
让我知道。 :)
答案 1 :(得分:0)
你能更具体一点吗?
Otherwiste,使用<> ?