需要帮助从SQL中的两个表中获取所有数据

时间:2013-09-11 02:11:34

标签: php sql

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

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

userAccess {           UID           评定           发展           learningmodule           项目 }

我到目前为止的SQL是

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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教程。 This one似乎已经足够好了。

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