我有一个表单设置,用户可以在其中输入人的用户名或姓氏。然后我根据他们输入的内容输入用户名或姓氏,查询数据库并显示所有用户信息以及他们是否可以访问某些区域。我需要查询两个表,并获取输入用户的所有信息。我假设你使用了JOIN,但我不太清楚该怎么做。现在我有查询从users表中获取所有数据我只需要在第二个表中添加帮助。这两个表看起来像这样
用户{ 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,可以在此处阅读有关联接的更多信息:
答案 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似乎已经足够好了。
我还建议您阅读有关如何在此处发布问题的指南,否则您不会得到任何人的关注,而且他们会向您投票:)