[英]WHERE query inside an AND statement? PHP/PDO/MySQL
我的网站上有2个表,一个users
表和一个user_friendships
表,每个表的结构都如此......
用户
id | user_id | credits_bank | credits_offered
用户友谊
id | user_id | user_followed_id
当他在我的用户登录呈现在网站上的其他用户的列表-其他用户的列表中谁是那些存储在users
表,必须在一个更大的价值credits_bank
比表credits_offered
表。
当创建友谊时,会话用户id
存储在user_friendships
表中,并且他所遵循的另一个成员的id也存储在user_followed_id
表下的user_friendships
表中。
问题是我现在需要一个查询来返回所有移动credits_bank
不是credits_offered
用户以及不在user_frienships
表中的用户与会话用户在同一记录中的用户。
我目前正在使用......
SELECT DISTINCT u.*
FROM users u
LEFT JOIN user_friendships uf ON u.user_id = uf.user_followed_id
WHERE u.user_id <> ?
AND u.credits_offered <= credits_bank
AND uf.user_followed_id IS NULL
更新
我希望看到一个用户列表,其credits_bank
的值大于credits_offered
,我只想显示它们,如果它们不存在于我的user_friendships
表中与我的会话用户相同的行中的记录中。
用户
id | user_id | credits_bank | credits_offered
___________________________________________________
1 123 10 2
2 231 6 3
3 312 6 5
4 213 2 1
用户友谊
id | user_id | user_followed_id
___________________________________________________
1 123 231
2 123 312
结果
如果session user_id = 123则...
user_id 231 and 312 WOULDN'T show as they are in the user friendships table alongside session user id
user_id 213 WOULD show as they have more credits_bank than credits_offered and arent in friendships table
如果会话user_id是312,那么他会看到所有结果,因为他与user_friendships表中的任何人不是朋友...
尝试这个:
SELECT u.id, u.user_id, u.credits_bank, u.credits_offered
FROM users u
WHERE u.credits_bank>u.credits_offered
AND u.user_id = [ENTER LOGGED IN USERS ID HERE]
AND u.user_id NOT IN (
SELECT f.user_ol
FROM user_friendships f
)
如果您有任何问题,请告诉我
编辑最新的SQL:
SELECT u.id, u.user_id, u.credits_bank, u.credits_offered
FROM users u
INNER JOIN user_friendships f
ON f.user_followed_id = u.user_id
AND u.credits_bank > u.credits_offered
AND f.user_id != [CURRENT_USER_ID]
AND u.user_id != [CURRENT_USER_ID]
据我所知,你很亲密。 如果当前用户的用户ID被称为SESS_USER_ID,那么这样的东西应该适合你;
SELECT DISTINCT u.*
FROM users u
LEFT JOIN user_friendships uf
ON uf.user_followed_id = u.user_id
AND uf.user_id = SESS_USER_ID
WHERE u.credits_offered <= credits_bank
AND uf.user_followed_id IS NULL
AND u.user_id <> SESS_USER_ID
(请注意,SESS_USER_ID在查询中使用了两次以使其变得简单)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.