Javaで構造化された方法でクエリを自動的に生成するために使用されるコードを自動生成するプログラムを開発しました。
私が追加した最新のオプションは、実際には他のテーブルの制約を指定しながら、1 つのテーブルの結果を取得することです。唯一の前提条件は、これらのテーブルが相互に外部キーを持つことです。
ここでは、実際の 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
請求書に関連する電子メールがビジネスパートナーに関連する電子メールと同じであるすべてのビジネスパートナーを教えてください..あまり意味がないと思います。
問題は、複数の結合が実際に意味をなすのはどこまでかということです。最初の例ではすでに 2 つの結合が必要でしたが、3 つ以上の結合が必要な正当な例はありますか?
これで何か助けていただければ幸いです。