首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL连接4个表

MySQL连接4个表
EN

Stack Overflow用户
提问于 2014-10-10 18:58:52
回答 3查看 273关注 0票数 1

我在加入4个mysql表进行调用管理时遇到了问题。

我的桌子是:

代码语言:javascript
复制
calls:
callId | contactId | companyId | numberId | timestamp | callNote | duration | state

contacts:
contactId | firstName | lastName | companyId | email | contactNote

numbers:
numberId | contactId | number

companies:
companyId | companyName

我需要一个能让我:

代码语言:javascript
复制
callId | timestamp | duration | number | callNote | state | contactId | firstName | lastName | company | email | contactNote

我想这是可能的,但我不知道怎么做。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-10 19:28:04

尝尝这个

代码语言:javascript
复制
select o.callId , o.timestamp , o.duration ,o.callNote ,
o.state,o.contactId,
  j.firstName , j.lastName ,j.company Id as company,
  j.email, j.contactNote,

r.number

from calls o 
left outer join contacts j 
  on o.contactId =j.contactId  
left outer join numbers r 
  on j.contactId=r.contactId;
票数 0
EN

Stack Overflow用户

发布于 2014-10-10 19:05:35

您应该使用INNER JOIN来连接这些表。例如:

代码语言:javascript
复制
SELECT 
    c.callId, 
    c.timestamp, 
    c.duration, 
    n.number, 
    c.callNote, 
    c.state, 
    c.contactId, 
    c1.firstName,
    c1.lastName, 
    c2.CompanyName as company, 
    c1.email, 
    c1.contactNote
FROM calls c 
INNER JOIN contacts c1 ON c1.contacId = c.contactId
INNER JOIN numbers n ON n.contactId = c1.contactid
INNER JOIN companies c2 ON c2.companyid = c.companyid
票数 1
EN

Stack Overflow用户

发布于 2014-10-10 19:09:35

试试这个:

代码语言:javascript
复制
SELECT
     calls.CallId
    ,calls.[Timestamp]
    ,calls.[duration]
    ,numbers.number
    ,calls.callNote
    ,calls.[state]
    ,calls.contactId
    ,contacts.firstName
    ,contacts.lastName
    ,companies.companyName AS company
    ,contacts.email
    ,contacts.contactNote
FROM
           calls
INNER JOIN contacts     ON calls.contactId = contacts.Id
INNER JOIN numbers      ON calls.contactId = numbers.contactId
                            AND calls.numberId = numbers.numberId                   
INNER JOIN companies    ON contacts.companyId = companies.companyId

假定一个联系人可能有多个数字,所以除非您在contactId和numberId上加入数字,否则您可能会发现结果重复,因为查询将不知道如何连接到number表。

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

https://stackoverflow.com/questions/26306253

复制
相关文章

相似问题

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