我很难理解如何编写一个SQL查询来返回下表结构中的结果。
我要做的第一件事是通过以下方式获取状态为1的客户列表:
SELECT * FROM clients WHERE status=1
然后我需要得到所有属于客户机的用户电子邮件地址。我的计划是遍历上面的查询结果,并为每个客户机运行多个查询。从“client_user_list”表中可以看到,一个用户可以属于多个客户机。
我试过这样做:
SELECT emailaddress
FROM users
INNER JOIN client_user_list ON users.user_id = client_user_list.user_id
WHERE users.client_id = 1
但失败了。正如你所看到的,我完全是个新手。任何帮助都将不胜感激,或随时为我指出一个适当的资源,以学习更多。我查过了,但还没有发现任何东西能掩盖这种复杂的东西。
附加信息:使用外键在客户机客户机用户列表和客户机用户列表用户之间存在关系
clients:
|---------------------------------------|
| client_id | client_name | status |
|---------------------------------------|
| 1 | John Doe | 1 |
| 2 | James Doe | 0 |
|---------------------------------------|
client_user_list:
|----------------------|
| client_id | user_id |
|----------------------|
| 1 | 5 |
| 2 | 6 |
| 1 | 6 |
|----------------------|
users:
|---------------------------------------|
| user_id | emailaddress |
|---------------------------------------|
| 5 | [email protected] |
| 6 | [email protected] |
|---------------------------------------|
提前谢谢你。
最佳答案
我不确定这是否是您唯一的问题,因为您没有指定确切的问题是什么,但是查询的WHERE
-子句包含一个错误。您的查询应更改为:
SELECT DISTINCT emailaddress
FROM users
INNER JOIN client_user_list ON users.user_id = client_user_list.user_id
WHERE client_user_list.client_id = 1
users
表没有名为client_id
的字段,client_user_list
表有。