我开发了一些程序,可以自动生成一些代码,用于在 Java 中以结构化方式自动生成查询。
我添加的最新选项是获取一个表的结果,同时实际指定其他表的约束。唯一的先决条件是这些表具有彼此的外键。
我将在这里只处理实际的 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 = "test@test.com"
它根据电子邮件地址选择业务合作伙伴。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 个以上连接的合法示例?
任何帮助将不胜感激。