因为我很新,所以不要评判我。我正在尝试制作过滤器,但途中遇到了一些困难。我有两张数据表。首先是公司,其次是用户。
Companies:
____________________
id | name |
1 | try |
2 | test |
3 | experiment |
Users:
_____________________________________
|id | company_id | name | status |
| 1 | 1 | Idiot |pending |
| 2 | 1 | Funny |active |
| 3 | 2 | Me |pending |
| 4 | 2 | Lucky |rejected|
| 5 | 2 | Moon |rejected|
我可能不得不进行 INNER JOIN 并且只选择待处理的公司和用户。我对“被拒绝”不感兴趣。所以我有兴趣得到:
3 | 2 | Me | pending | test
和其他有待处理且无活动的记录。公司必须有待处理用户,并且同一公司不得有活动用户。
SELECT *
FROM users u
INNER JOIN companies c
ON u.company_id = c.id
WHERE u.status = 'pending'
AND NOT EXISTS(SELECT u2.status
FROM users u2 ON u2.id = c.id
WHERE u2.status = 'pending')
或类似的东西是SQL,但我现在无法检查。我想把它变成教义,例如$query = ..->innerJoin(..)->where...
但做不到。请提供任何帮助。哦,例如,这将如何处理 100,000 条记录数据库?有没有更好的办法?谢谢你。