2013-09-11 43 views
0

我有一个表单,用户可以在其中输入用户名或姓氏。然后,根据他们输入的内容和查询数据库并显示所有用户信息以及他们是否有权访问某些区域,然后输入用户名或姓。我需要查询两个表并获取输入用户的所有信息。我假设你使用JOIN,但我不太确定如何去做。现在我有查询来获取用户表中的所有数据,我只需要在第二个表中添加帮助。这两个表如下所示需要帮助从SQL中的两个表中获取所有数据

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

userAccess { UID 评估 发展 learningmodule 项目 }

的SQL我到目前为止是

SELECT * 
FROM Users 
WHERE username = '$username' OR lastname = '$lastname' 
+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

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,因为它是多余的,因为你已经从用户表中选择它并且由于您通过该密钥加入,您不需要再次使用该密钥。

另请注意,不是使用等号运算符(=),而是使用LIKE运算符,因为您希望根据部分信息(如关键字而不是全部单词)筛选信息的机会更多。

我建议你看一看初学者的SQL教程。 This one似乎足够好。

我也建议你阅读关于如何在这里张贴问题的指导原则,否则你将无法从任何人得到太多的关注,再加上他们将downvote你:)

+0

哦,是的,还有一些其他的,如果你刚刚开始使用SQL,请避免在查询中使用“SELECT * FROM”,而只需选择实际需要的字段,这样可以加快查询速度,并实现代码更容易维护和调试。 –