同じ文字列が Table_1 の頭字語と Table_2 の user_pk の両方として表示される場合、名前の 1 つが完全に null である場合、それを表示したくないと推測するのは公平ですか?行が null ではありません。1 行だけではなく 2 行が表示されますか?
その仮定に取り組んでいます:
SELECT t1.acronym, t1.surname, t1.givename
FROM table_1 AS t1
WHERE t1.surname IS NOT NULL OR t1.givename IS NOT NULL
UNION
SELECT t2.user_pk AS acronym, t2.lastname AS surname, t2.firstname AS givename
FROM table_2 AS t2
WHERE t2.lastname IS NOT NULL OR t2.firstname IS NOT NULL
これがあなたが望むものに十分に近いものでない場合は、次の表から必要な出力を提供してください:
Table_1
Acronym Surname Givename
Denton Powell Powell Denton
Jane Goodall Goodall
Susan Mitchell Susan
Martin Catcall
John Thimble Thimble John
Table_2
User_pk Lastname Firstname
Denton Powell
Jane Goodall Jane
Susan Mitchel Mitchell
Martin Catcall CatCall Marty
John Thimble Needle David
可能な組み合わせは他にもありますが、それらに必要なものを指定するまでには、ほとんどのケースを十分に詳細にカバーしており、他のケースは明らかです。
主な質問へのコメントへの回答
この "user_pk" は table_1 (フィールド "acronym") に既に存在するため、1 行だけを表示したいのです。あなたの場合、出力は次のようになります。パウエル; デントン。table_2 の行は無視する必要があります。
もう一度解釈すると、これはエントリが Table_1 にある場合はそれを使用することを意味します。Table_2 に一致するエントリがない場合にのみ Table_2 のエントリを使用しますか?
繰り返しますが、その仮定に基づいて作業すると、Table_1 のデータと「Table_2 と Table_1 の半結合の補数」の結合が必要になります。 Table_1' にエントリがある:
SELECT t1.acronym, t1.surname, t1.givename
FROM table_1 AS t1
UNION
SELECT t2.user_pk AS acronym, t2.lastname AS surname, t2.firstname AS givename
FROM table_2 AS t2
WHERE t2.user_pk NOT IN (SELECT t1a.acronym FROM table_1 AS t1a);
これにより、名前のヌル性に関する条件が失われます。一部のユーザーが姓と名のフィールドに情報がない Table_1 のエントリを持っている場合、それらの空の名前が表示されます。他に適用したい条件がある場合は、少し調整する必要があります。
ちなみに、「user_pk」が主キー (非 null で一意) であると指定したことも、「頭字語」が主キーであると指定したこともないと思います。そのような詳細は役に立ち、あなたの質問に答える人々の心配を解消するでしょう (たとえ彼らが心配を表明していなくても)。また、あなたが話していることを知っていることを安心させます。