gpt4 book ai didi

mysql - 我试图让已分配某些内容的用户能够使用 PHP 和 MYSQL 查看它

转载 作者:行者123 更新时间:2023-11-29 17:36:05 26 4
gpt4 key购买 nike

我尝试过寻找这个问题的答案,但找不到真正适合我要找的答案。

我正在制作一个小型 Web 应用程序,允许管理员创建类(class) Material 和测试,并分配给用户。

我想弄清楚的是,已分配类(class)的用户如何通过单击按钮来访问该类(class)。

我创建了一个表来存储用户信息,以用户 ID 为主键。我有一个类(class)表,其中存储所有 Material 和类(class)的测试,类(class) ID 是该表的主键。

我制作了第三个表,它是分配的类(class)表,它包含两个外键。一种引用用户表中的用户 ID,另一种引用类(class)表中的类(class) ID。

我插入了一些图像来说明您的意思。

我不太清楚根据分配的类(class)表提取类(class) Material 和测试的 Sql 语法。

感谢所有反馈。这是引用用户 ID(id)和类(class) id(u_id)的两个外键

enter image description here

最佳答案

不确定您的列名是什么,所以我使用 * 代替。您可以使用JOIN(又名INNER JOIN)将表链接在一起。您连接两个表的主键。

I have created one table which stores the user information, with a user ID being a primary key. I have a course table, which stores all materials and the course's test, with a course id being that table's primary key.

我使用 id 作为您的用户表,使用 course_id 作为类(class)表。根据需要进行更改。

查找给定用户的所有类(class)。

SELECT a.*
FROM course a
JOIN assigned_course b ON a.course_id = b.id
WHERE b.u_id = :userId
;

查找给定类(class)的所有用户。

SELECT a.*
FROM user a
JOIN assigned_course b ON a.id = b.u_id
WHERE b.id = :courseId
;

编辑 #1 - 不使用 JOIN 的子查询

Thanks for your feedback, as I stated above, I was hoping to avoid a join.

我强烈建议您学习联接。当您需要查询多个表时,它们是必不可少的。在这种情况下,您可以使用子查询来查找用户的匹配类(class),但您将无法同时访问该用户数据;这就是连接的力量。我将在下面添加最后一个示例,展示如何同时获取类(class)和用户数据。

查找给定用户的所有类(class)(使用子查询)

SELECT a.*
FROM course a
WHERE course_id IN (
SELECT id
FROM assigned_course b
WHERE u_id = :userId)
;

显示与用户相关的类(class)的最终示例(多对多)

SELECT * -- You now have access to a, b, and c data
FROM course a
JOIN assigned_course b ON a.course_id = b.id -- joined by PKs
JOIN user c ON c.id = b.u_id -- joined by PKs
WHERE c.id = :userId
;

关于mysql - 我试图让已分配某些内容的用户能够使用 PHP 和 MYSQL 查看它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50277344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com