我在加入4个mysql表进行调用管理时遇到了问题。
我的桌子是:
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我想这是可能的,但我不知道怎么做。
发布于 2014-10-10 19:28:04
尝尝这个
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;发布于 2014-10-10 19:05:35
您应该使用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发布于 2014-10-10 19:09:35
试试这个:
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表。
https://stackoverflow.com/questions/26306253
复制相似问题