2014-10-10 70 views
1

我遇到了问题,为我的callmanagement加入了4个mysql表。MySQL加入4个表

我的表是:

calls: 
callId | contactId | companyId | numberId | timestamp | callNote | duration | state 

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

numbers: 
numberId | contactId | number 

companies: 
companyId | companyName 

我需要一个查询这使我:

callId | timestamp | duration | number | callNote | state | contactId | firstName | lastName | company | email | contactNote 

我认为这是可能的,但我不知道怎么办。

+2

确定。什么阻止你?你有没有学过'INNER JOIN's?你是否确定了你的主键和外键? – 2014-10-10 19:03:41

回答

0

试试这个

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; 
+1

这就是正确的查询!多谢。 – bambamboole 2014-10-10 19:50:34

1

您应该使用INNER JOIN来加入表格。例如:

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

试试这个:

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数字,你可能会发现你因为查询不知道如何加入数字表格,所以请在结果中进行重复。

+0

为我自己的理解,请你能解释解决方案的投票 - 我不知道我的错误是什么。 – 2014-10-10 19:49:01