0

我设置了一个表单,用户可以在其中输入一个人的用户名或姓氏。然后我根据他们输入的内容获取用户名或姓氏,并查询数据库并显示所有用户信息以及他们是否有权访问某些区域。我需要查询两个表并获取输入的用户的所有信息。我假设您使用 JOIN 但我不太确定该怎么做。现在我有查询从用户表中获取所有数据,我只需要帮助添加到第二个表中。两张表长这样

用户 { uid 用户名 密码 名字 姓氏 电子邮件 }

userAccess { uid 评估开发学习模块项目 }

我到目前为止的 SQL 是

    SELECT *
FROM Users
WHERE username = '$username' OR lastname = '$lastname'
4

2 回答 2

1

你是对的,你需要使用一个连接。这种类型的连接称为内部连接。你可以像这样实现它:

SELECT * from Users, userAccess WHERE Users.uid = userAccess.uid AND Users.uid = #;

我猜你会有一个 id 列,它也是你的 userAccess 表的主键。上述查询将为上述语句为真的每个条件提供 1 条记录中的两个表的数据。

如果您使用的是 MySQL,您可以在此处阅读有关连接的更多信息:

http://dev.mysql.com/doc/refman/5.0/en/join.html

于 2013-09-11T02:15:35.157 回答
0

你没有提到你正在使用哪个数据库,虽然我猜是 MySql。

您需要做的是一个简单的内部连接:

SELECT u.uid 
    u.username, 
    u.password, 
    u.firstname, 
    u.lastname, 
    u.email, 
    ua.assessment, 
    ua.development, 
    ua.learningmodule, 
    ua.project
FROM Users u
INNER JOIN UserAccess ua
    ON u.uid = ua.uid
WHERE u.firstname LIKE '%$username%' OR u.lastname LIKE '%$lastname%';

请注意,我没有在 UserAccess 表中再次选择 uid,因为它是多余的,因为您已经从 Users 表中选择了它,并且由于您通过该键加入,因此您不再需要它。

另请注意,我没有使用等号运算符 (=),而是使用 LIKE 运算符,因为您更有可能希望根据部分信息(例如关键字而不是完整词)过滤信息。

我建议您看一下针对初学者的 SQL 教程。这个好像还不错。

我还建议您阅读有关如何在此处发布问题的指南,否则您将不会得到任何人的太多关注,而且他们会否决您:)

于 2013-09-11T02:23:37.287 回答