我对某些MySQL连接执行操作的理解有点分散。
我有多个表,ALM_RECORDS有ID,ALM_PHONES,ALM_ADDRESS都有一列RecordsID,与ALM_RECORDS的ID列相关。
基本上我需要根据此ID从所有3个表中提取。下面是我的查询,但它不断地将重复的条目返回三次。
SELECT a.ID, a.FIRST_NAME, a.LAST_NAME,
b.RecordID, b.PHONESID, b.PhoneType, b.NUM,
c.RecordID, c.address_block, c.city, c.state, c.post_code, c.country
FROM ALM_RECORDS a
LEFT JOIN ALM_PHONES b
ON a.ID = b.RecordID
LEFT JOIN ALM_ADDRESS c
ON a.ID = c.RecordID
WHERE a.ID = "123456"
结果应该是:
123456 - John - Smith - Business - 111.222.3333 - address etc..
123456 - John - Smith - Home - 444.555.6666 - address etc..
但我得到的是:
123456 - John - Smith - Business - 111.222.3333 - address etc..
123456 - John - Smith - Business - 111.222.3333 - address etc..
123456 - John - Smith - Business - 111.222.3333 - address etc..
123456 - John - Smith - Home - 444.555.6666 - address etc..
123456 - John - Smith - Home - 444.555.6666 - address etc..
123456 - John - Smith - Home - 444.555.6666 - address etc..
有人可以向我解释我在这里缺少什么吗?我应该使用不同类型的加入吗?
答案 0 :(得分:0)
SELECT a.ID, a.FIRST_NAME, a.LAST_NAME,
b.RecordID, b.PHONESID, b.PhoneType, b.NUM,
c.RecordID, c.address_block, c.city, c.state, c.post_code, c.country
FROM ALM_RECORDS a
LEFT JOIN ALM_PHONES b
ON a.ID = b.RecordID
LEFT JOIN ALM_ADDRESS c
ON a.ID = c.RecordID
WHERE a.ID = "123456" GROUP BY b.NUM