我真的不知道如何表达我的问题,可能是为什么谷歌不给我我需要的结果,但我会尝试。
我有两个表,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脚本循环访问另一个表,以查找给定用户的已提交文件。它有效,但它不是我想要的,而且是一个麻烦和新秀的举动。
答案 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语句中即可。