Parse - 使用 OR 和 AND 的复合查询?
Parse - Compound queries with OR and AND?
基本上我想做类似于
的事情
SELECT * FROM FriendRequests WHERE (from == user OR to == user) AND status = "accepted"
有一个名为 orQueryWithSubqueries
的方法,它允许我将两个 or 结合起来,但我不知道如何在它们和状态查询之间执行 AND。
let statusCheck = FriendRequest.query()
statusCheck.whereKey("status", equalTo: FriendRequest.Status.Accepted.rawValue)
let userCheckOne = FriendRequest.query()
userCheckOne.whereKey("from", equalTo: User.currentUser())
let userCheckTwo = FriendRequest.query()
userCheckOne.whereKey("to", equalTo: User.currentUser())
let userCheck = PFQuery.orQueryWithSubqueries([userCheckOne, userCheckTwo])
// Some how do (userCheck AND statusCheck)
如果您是从 SQL 角度来看的,请将 OR
查询更像是一个 UNION
语句。
您的查询将如下所示:
SELECT *
FROM FriendRequests
WHERE from = user
AND status = "accepted"
UNION
SELECT *
FROM FriendRequests
WHERE to = user
AND status = "accepted"
如您所见,解决方案是简单地将 AND
部分添加到您的两个查询中:
let userCheckOne = FriendRequest.query()
userCheckOne.whereKey("from", equalTo: User.currentUser())
userCheckOne.whereKey("status", equalTo: FriendRequest.Status.Accepted.rawValue)
let userCheckTwo = FriendRequest.query()
userCheckTwo.whereKey("to", equalTo: User.currentUser())
userCheckTwo.whereKey("status", equalTo: FriendRequest.Status.Accepted.rawValue)
let userCheck = PFQuery.orQueryWithSubqueries([userCheckOne, userCheckTwo])
基本上我想做类似于
的事情SELECT * FROM FriendRequests WHERE (from == user OR to == user) AND status = "accepted"
有一个名为 orQueryWithSubqueries
的方法,它允许我将两个 or 结合起来,但我不知道如何在它们和状态查询之间执行 AND。
let statusCheck = FriendRequest.query()
statusCheck.whereKey("status", equalTo: FriendRequest.Status.Accepted.rawValue)
let userCheckOne = FriendRequest.query()
userCheckOne.whereKey("from", equalTo: User.currentUser())
let userCheckTwo = FriendRequest.query()
userCheckOne.whereKey("to", equalTo: User.currentUser())
let userCheck = PFQuery.orQueryWithSubqueries([userCheckOne, userCheckTwo])
// Some how do (userCheck AND statusCheck)
如果您是从 SQL 角度来看的,请将 OR
查询更像是一个 UNION
语句。
您的查询将如下所示:
SELECT *
FROM FriendRequests
WHERE from = user
AND status = "accepted"
UNION
SELECT *
FROM FriendRequests
WHERE to = user
AND status = "accepted"
如您所见,解决方案是简单地将 AND
部分添加到您的两个查询中:
let userCheckOne = FriendRequest.query()
userCheckOne.whereKey("from", equalTo: User.currentUser())
userCheckOne.whereKey("status", equalTo: FriendRequest.Status.Accepted.rawValue)
let userCheckTwo = FriendRequest.query()
userCheckTwo.whereKey("to", equalTo: User.currentUser())
userCheckTwo.whereKey("status", equalTo: FriendRequest.Status.Accepted.rawValue)
let userCheck = PFQuery.orQueryWithSubqueries([userCheckOne, userCheckTwo])