我已經看到很多示例將多個表連接回一個主表,但這個查詢不同之處在於級聯。MySQL加入3個級聯表
我有3個表類似於下面的(簡化爲便於):
**CONTACTS**
--------------------------------------------
Cid name
--------------------------------------------
1 John
2 Peter
3 Karl
**OPPORTUNITIES**
--------------------------------------------
Oid Cidlink title
--------------------------------------------
1 2 php lookup script
2 2 php facial recognition
3 3 html email template
4 1 javascript verification
**ATTACHMENTS**
--------------------------------------------
Aid Oidlink attachment
--------------------------------------------
1 3 received enquiry
2 3 header and footer done
3 3 pixel trace image done on server
4 2 database structure done
5 2 html get form done
正如你所看到的,附件鏈接回的機會和機遇涉及到的聯繫人。除了通過商機表以外,附件不直接鏈接到聯繫人。
我需要創建一個記錄集,包括所有3個表中的字段,並且掙扎着。
SELECT CONTACTS.*, OPPORTUNITIES.*, ATTACHMENTS.*
FROM ATTACHMENTS
INNER JOIN OPPORTUNITIES
ON CONTACTS.Cid = OPPORTUNITIES.Cidlink
INNER JOIN ATTACHMENTS
ON OPPORTUNITIES.Oid = ATTACHMENTS.Oidlink
ORDER BY ****whatever****
我結束了還是我接近這個錯誤的方式?
爲什麼你有附件列出兩次?第一個人不應該是「聯繫人」嗎? (是的,這是關閉假設一個記錄必須在所有3個表中,你需要它。)否則你需要使用OUTER連接。 – xQbert
如果您不使用LEFT加入,John將被排除在外,因爲他沒有附件機會。通過使用LEFT Join,你可以包括John的機會,沒有附件。 (請注意,在這些問題中發佈預期結果有助於我們更好地理解您的想法,並考慮在未來發布的信息中包含預期結果!)它有助於說明您試圖達成的目標。 – xQbert