首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中比较三个表中的一个答案

问在MySQL中比较三个表中的一个答案
EN

Stack Overflow用户
提问于 2014-09-17 03:29:49
回答 2查看 56关注 0票数 0

我使用MySQL已经有一段时间了,最近才发现有必要更好地管理我的数据(MOAR数据!)……

我遇到的问题是:

代码语言:javascript
复制
Table1: users
- id

Table2: companies
- companyid
- companyname

Table3: customers
- customerid
- companyid

我正在尝试询问以下问题。

我有了用户ID,我需要用它从客户那里获取客户的companyid,并根据customers中分配的companyid返回companyname。

我很有可能在这件事上大错特错。我明白,随着数据开始增长,最终数据将变得很难用肉眼阅读。我关心的是有能力将客户与业务关联和解除关联。

如果你有任何建议,或者有更好的策略,或者认为我应该将这些信息添加到用户表中,请让我知道。

EN

回答 2

Stack Overflow用户

发布于 2014-09-17 03:44:13

首先,您需要了解规范化是什么:http://support.microsoft.com/kb/283878

数据库表并不是“用眼睛来读”的。我很确定您现在正在处理的是一个非常小的数据库,但想象一下,在未来您正在处理数千个包含数百万行的表,“视觉检查”将不再起作用。

一个简单的连接将会给出您所需要的:

代码语言:javascript
复制
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表中包含公司信息肯定是不可行的。

票数 1
EN

Stack Overflow用户

发布于 2014-09-17 03:58:48

以行动的名义发布。

我得到了我想要的结果,如下:

代码语言:javascript
复制
SELECT t2.companyname FROM companies t2,customers t3 WHERE t3.companyid = t2.companyid AND t3.customerid=?

我不知道我可以创建引用,这对我来说会变得非常有用。谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25876933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档