我已經開發了一些自動生成一些用於在Java中以結構化方式自動生成查詢的代碼的程序。MySQL(InnoDB) - 有多少聯接有意義?
我添加的最新選項是獲取一個表的結果,同時實際指定其他表的約束。唯一的先決條件是這些表有彼此的外鍵。
我只會在這裏處理實際的SQL查詢。
這是經常使用的有效SQL查詢:
SELECT businessPartners.businessPartnerId, businessPartners.name
FROM businessPartners
JOIN BP_emails ON businessPartners.businessPartnerId = BP_emails.businessPartnerId
JOIN emails ON BP_emails.emailId = emails.emailId
WHERE emails.email = "[email protected]"
它可以選擇根據自己的電子郵件住址的商業夥伴。 businessPartners.businessPartnerId
和emails.emailId
都是主鍵,BP_emails
中有外鍵。
類似的結構正用於發票和電子郵件之間的發票和鏈接。
所以我還發現(和驗證),這是可能做到這一點查詢:
SELECT businessPartners.businessPartnerId, businessPartners.name
FROM businessPartners
JOIN BP_emails ON businessPartners.businessPartnerId = BP_emails.businessPartnerId
JOIN emails ON BP_emails.emailId = emails.emailId
JOIN INV_emails ON emails.emailId = INV_emails.emailId
JOIN invoices ON INV_emails.invoiceId = invoices.invoiceId
WHERE invoices.invoiceId >=1
AND invoices.invoiceId <=1
所有我有一個很難搞清楚什麼確切指的是第一:我認爲這意味着像:給我所有invoices.invoiceId = 1
的商業合作伙伴,以及與發票相關的電子郵件與與商業夥伴相關的電子郵件相同......所以我覺得沒什麼意義。
所以問題是:直到多個連接實際上有意義的地方?在我的第一個例子中,我已經需要兩個連接了,是否有需要3個連接的合法示例?
任何幫助,將不勝感激與此。
好的,這是有用的技術洞察力,絕對是你答案的第二部分。但是現在我對邏輯部分更感興趣了。因爲我的90%自動生成的東西似乎只是針對「無意義」查詢的準備,這些查詢永遠不會被使用。 – skiwi