0
我有用于存储跟随其他人的人的表格。两列。我可以无法否定mysql中的条件
$stmt = $conn->prepare("
SELECT USERS.NAME, USERS.NAME2
FROM USERS
LEFT JOIN USERS_BOOKS ON USERS_BOOKS.USERID = USERS.ID
LEFT JOIN FOLLOW ON FOLLOW.FOLLOW_ID = USERS.ID
WHERE USERS_BOOKS.BOOKID = ? AND FOLLOW.USER_ID = ?
");
$stmt -> execute(array($bookid, $session_userid));
但是查询这些特定用户遵循谁(并具有一定的书),我不知道如何查询那些我不明白。我不能简单地将WHERE子句修改为... AND NOT FOLLOW.USER_ID =? ,因为结果将包括我已经遵循的那些。下表是一个示例,其中USER_ID是跟随的人,FOLLOW_ID是跟随的人。
ROW USER_ID FOLLOW_ID
1 6 1
2 15 5
3 13 8
4 15 10
5 15 12
6 4 5
第一个查询的结果是行号#2,#4,#5,因为USER_ID No.15跟在这三个用户之后。但是,当我说NOT FOLLOW.USER_ID = ?
时,结果将是行号#1,#3,#6,意味着用户1,8,5。但我已经跟随用户5,那么我该怎么做?结果我只需要两行:#1和#3。
这导致大家谁我不跟随,而忽略他们对那本书的表达。 – erdomester 2015-04-03 22:05:30
我在“不存在”中包含了两个条件 - 没有意识到你想保留一个而否定另一个。现在就试试。请注意,userid和bookid现在需要切换订单。 – 2015-04-03 22:44:36
看起来它给出了正确的结果,但我必须在ON子句中将FOLLOW.FOLLOW_ID更改回USERS.ID,否则我会在'on子句'中得到未知列'FOLLOW.FOLLOW_ID'。 – erdomester 2015-04-03 23:11:04