我使用MySQL已经有一段时间了,最近才发现有必要更好地管理我的数据(MOAR数据!)……
我遇到的问题是:
Table1: users
- id
Table2: companies
- companyid
- companyname
Table3: customers
- customerid
- companyid我正在尝试询问以下问题。
我有了用户ID,我需要用它从客户那里获取客户的companyid,并根据customers中分配的companyid返回companyname。
我很有可能在这件事上大错特错。我明白,随着数据开始增长,最终数据将变得很难用肉眼阅读。我关心的是有能力将客户与业务关联和解除关联。
如果你有任何建议,或者有更好的策略,或者认为我应该将这些信息添加到用户表中,请让我知道。
发布于 2014-09-17 03:44:13
首先,您需要了解规范化是什么:http://support.microsoft.com/kb/283878
数据库表并不是“用眼睛来读”的。我很确定您现在正在处理的是一个非常小的数据库,但想象一下,在未来您正在处理数千个包含数百万行的表,“视觉检查”将不再起作用。
一个简单的连接将会给出您所需要的:
SELECT t2.companyname
FROM table1 t1, table2 t2, table3 t3
WHERE t1.id = t3.customerid
AND t3.companyid = t2.company id
AND t3.customerid = (some id) //Depends on what your purpose is,
//this line can also be replaced by
//AND t1.id = (some id)在您的示例中,只有当所有用户也都是客户时,才可以将用户表和客户表合并为一个表。但是,在User或Customer表中包含公司信息肯定是不可行的。
发布于 2014-09-17 03:58:48
以行动的名义发布。
我得到了我想要的结果,如下:
SELECT t2.companyname FROM companies t2,customers t3 WHERE t3.companyid = t2.companyid AND t3.customerid=?我不知道我可以创建引用,这对我来说会变得非常有用。谢谢!
https://stackoverflow.com/questions/25876933
复制相似问题