从一个表中选择所有值,检查另一个表以查看相关列并获取更多值

时间:2016-11-29 07:46:59

标签: mysql

我真的不知道如何表达我的问题,可能是为什么谷歌不给我我需要的结果,但我会尝试。
我有两个表,required_files表和submitted_files表。我有一个页面,我想向用户显示提交所需的所有文件,并显示他/她提交的文件。

所需文件表如下:

file_id     file_name                   mandatory
1         Registration Certificate          0
2         KRA Clearance                     1
3         3 Months Tax returns              0
4         Business Permit                   1
5         Tour Permit                       1
6         Country Govt Operating License    0
7         Certificate of good Conduct       0

file_id是唯一的,必填列是二进制值,用于说明在注册之前文件是否是必需的。
提交的文件表是以下

file_id    user_id     file_required_id    original_file_name  file_name_on_server                      submission_date
1             2             2                KRA_Form.docx      0a10f5291e9bcb6a345ac7a8f5705b8a.docx   2016-11-01
2             2             3               Tax_returns.docx    9f04361013df7e25235a03c506f347ed.docx   2016-11-03
3             3             3               Taxes.docx          86aea74cc87fb669510d9d4c488cbcf8.docx   2016-11-04

file_id是唯一的AI值,user_id col是当前用户登录的唯一值,file_required_id列与files_required.file_id列有关

在获取值时,我已经有了user_id(在这种情况下,让我们使用user_id = 2)现在我想获取files_required表的所有值,并检查文件提交表中的user_id = 2表示用户已提交文件的文件。

我的sql查询如下

SELECT files_required.*, submitted_files.* FROM submitted_files
RIGHT JOIN files_required ON  files_required.id = submitted_files.file_required_id
WHERE submitted_files.user_id = 2


这给了我两行只有user_ids匹配但我想要整个files_required表值并显示用户提交的文件。有人请帮助。

与此同时,我首先获取files_requied表,然后使用php脚本循环访问另一个表,以查找给定用户的已提交文件。它有效,但它不是我想要的,而且是一个麻烦和新秀的举动。

2 个答案:

答案 0 :(得分:1)

user_id本身尝试RIGHT JOIN条件,如下面的查询

SELECT files_required.*, submitted_files.* 
FROM submitted_files
RIGHT JOIN files_required ON  files_required.id = submitted_files.file_required_id
 AND submitted_files.user_id = 2

答案 1 :(得分:0)

你想要这个。

SELECT submitted_files.user_id, files_required.*, submitted_files.* 
FROM submitted_files
RIGHT JOIN files_required ON  files_required.id = 
submitted_files.file_required_id

不要将where条件放在userid上,因为它会过滤掉仅为该用户提供的数据。您还希望看到所有记录和用户。只需将user_id放在select语句中即可。