個別の演算子を使用できるはずです。
SELECT DISTINCT Customers.member_id, Books.book_title
FROM Customers
INNER JOIN Books ON Customers.member_id = Books.member_id
それが正しく機能しない場合は、内部選択を使用できます。
SELECT DISTINCT *
FROM (SELECT Customers.member_id, Books.book_title
FROM Customers
INNER JOIN Books ON Customers.member_id = Books.member_id) As newTable
また、これが頻繁に使用されるクエリである場合、UNION にはパフォーマンスの問題があることが知られているため、UNION は避けます。
編集に応じて:
SELECT Customers.member_id, Customer_Info.Name, ISNULL(newTable.book_title, '')
FROM Customers
INNER JOIN Customer_Info
LEFT JOIN (SELECT DISTINCT member_id, book_title FROM Books) newTable
ON newTable.member_ID = Customers.member_id
これにより、顧客に関連付けられたすべての本が返されます (ただし、タイトルごとに 1 回だけで、本が見つからない場合は空の文字列が返されます)。これで質問に答えられない場合は、テーブルに関する追加情報と例を含めてください。あなたが望む結果を更新します。
OK、これであなたが探しているものがわかったと思います:
提供された表を使用して、元の質問に基づいたクエリを次に示します。ただし、顧客が 2 つの異なる電子メール アドレスを設定している場合は機能しません。その場合、TOP(1) を追加して結果を 1 つだけにすることはできますが、それが「正しい結果」かどうかはわかりません。
SELECT Customers.member_id, Office.Office_Name, ISNULL(newTable.email, '')
FROM Customers
INNER JOIN Office
LEFT JOIN (SELECT DISTINCT member_id, email
FROM Books
WHERE email IS NOT NULL AND email <> '') newTable
ON newTable.member_ID = Customers.member_id
提供したデータと出力例に基づく別のクエリを次に示します。
SELECT Member_Name, Email
FROM thridTable
WHERE Member_Name = @SomeInputParameter
サンプル データがどの程度代表的かはわかりませんが、メンバー名を複数のテーブルに保存するのはなぜですか? それは将来の頭痛の種です。