私はここで絶対SQLNoobであることを認めます(内部結合を行うことはできますが、SQLに関する知識と同じくらい「複雑」です)が、何かを最もよく達成する方法についてのヘルプ/洞察/アイデアを期待しています。私は会社のテーブルとそれらの会社の個人のサブテーブルを持っています。会社は郵送先住所を持つことができますが、個人が通常の会社の住所を上書きするために別の郵送先住所を持っている可能性があります。私の環境にはSQLServer2008があります。私の考えは、SQLクエリを次のように2回ループさせることでした。
SELECT tblIndividuals.FirstName,
tblIndividuals.LastName,
tblIndividuals.CompanyName,
tblIndividuals.MailingAddress1,
tblIndividuals.MailingAddress2,
tblIndividuals.MailingAddress3,
tblIndividuals.MailingAddress4,
tblIndividuals.City,
tblIndividuals.[State],
tblIndividuals.Zip
FROM tblIndividuals
INNER JOIN tblCompanies ON tblIndividuals.CompanyName = tblCompanies.CompanyName
WHERE tblIndividuals.ChristmasList=1
AND tblIndividuals.MailingAddress1 IS NOT NULL
SELECT tblIndividuals.FirstName,
tblIndividuals.LastName,
tblIndividuals.CompanyName,
tblCompanies.MailingAddress1,
tblCompanies.MailingAddress2,
tblCompanies.MailingAddress3,
tblCompanies.MailingAddress4,
tblCompanies.City,
tblCompanies.[State],
tblCompanies.Zip
FROM tblIndividuals
INNER JOIN tblCompanies ON tblIndividuals.CompanyName = tblCompanies.CompanyName WHERE tblIndividuals.ChristmasList=1
AND tblIndividuals.MailingAddress1 IS NULL
ORDER BY tblIndividuals.CompanyName
このように、コードは1回ループし、会社の住所を上書きする郵送先住所を持つクリスマスリストのすべての個人を取得してから、デフォルトの会社を使用するクリスマスリストのすべての個人を取得するという考えでした。アドレス、最後にすべての結果を会社名でソートします。SQLに精通している方は、これが期待どおりに機能せず、2つのクエリを実行するだけであることがわかっています。SQLに精通している人は、私の最終的な目標を達成するために、ここでより良い方法で洞察を提供してくれるでしょうか。どんな助けでも大歓迎です。よろしくお願いします。
編集:最初のクエリは実際には内部結合を必要としないことを知っています。2番目のクエリからコピー/貼り付けしただけで、変更しませんでした。>。<