【发布时间】:2011-08-29 16:08:54
【问题描述】:
我有 3 个表,每个表都包含一个名为 username 的列。在注册部分,我需要检查请求的用户名是否是新的且唯一的。
在我继续之前,我需要一条 SQL 来告诉我该用户是否存在于这些表中的任何一个中。我试过了:
SELECT tbl1.username, tbl2.username, tbl3.username
FROM tbl1,tbl2,tbl3
WHERE tbl1.username = {$username}
OR tbl2.username = {$username}
OR tbl3.username ={$username}
这是要走的路吗?
【问题讨论】:
-
你有三个表有相同的列??我假设您确实知道规范化,这是故意的吗?
-
我是一个完全没有数据库编程的菜鸟 :)
-
那么我建议您在阅读了高达 3NF 的规范化之后回到您的数据库设计。像用户名这样的东西应该只存储一次并与 ID 相关联,然后由其他表通过外键引用。那么你当前的问题,以及未来可能的许多其他问题,会简单得多。此外,您还应该考虑如果用户名存在于 >0 但
-
@Brian Patterson 有点苛刻,不是吗?我从来没有遇到过一个不“在工作中学习”的开发人员。诚然,海报处于最极端的位置,但尝试某人并不是鼓励改进的最佳方式
-
@Ted:将邀请创建为普通用户记录,但在表中添加确认标志。您可以定期删除超过 X 天的未确认记录,以释放这些用户名供其他人使用。