首页 > 解决方案 > mySql 查询——网络文件共享程序

问题描述

这是我的代码。它应该选择我正在共享特定文件的人“to_whom”的名称,整个事情需要返回user_id(u_c.to_whom)和user_name,

所以我可以用彼此相邻的复选框填充我的朋友列表,一旦单击,就会将该特定文件共享(保存到数据库表中)给特定的人。

这是来自用户之间共享文件的网络应用程序。

SELECT u_c.to_whom, u.user_name
                    FROM files f

                    LEFT JOIN users_connections u_c
                    ON (u_c.who = :user_id OR u_c.to_whom = :user_id) AND u_c.friends = "Y"
                    
                    LEFT JOIN users u
                    ON u.user_id = u_c.to_whom
                    
                    WHERE f.file_id = 90

在我们的表格文件

file_id, file_name, file_desc, etc...

在表用户连接中

id, who, to_whom, friends
1    1      4       Y

表示用户 1 已与用户 4 建立了友谊,“Y”表示该友谊为 TRUE(N = 仍待处理)

用户中,我们有

user_id, user_name
   1       Jack

由于某种原因,我似乎无法让它工作。任何高级用户可以帮助我吗?

非常感谢!

标签: mysql

解决方案


我找到了这段代码的答案。如果您想构建共享文件系统,它是必不可少的代码。

$query_list_count = "SELECT COUNT(user_id)
                    
                    FROM users_connections u_c
                                            
                    LEFT JOIN users u
                    ON u.user_id = u_c.who OR u.user_id = u_c.to_whom
                    
                    LEFT JOIN files f
                    ON f.file_id = :file_id
                    
                    WHERE (u_c.who = :user_id OR u_c.to_whom = :user_id AND friends = :friends)
                    GROUP BY u.user_id  

                    ";
                                 
    $result_list_count = $db->prepare($query_list_count);
    $result_list_count->bindValue(':user_id', $_SESSION['user_id'], PDO::PARAM_INT);
    $result_list_count->bindValue(':friends', "Y", PDO::PARAM_STR);
    $result_list_count->bindValue(':file_id', $file_id, PDO::PARAM_INT);
    $count_ = $result_list_count->fetchColumn();

推荐阅读