5

"UNION" ステートメントがフィールド "acronym" と "user_pk" にのみ適用されるように (フィールド "surname, givenname; lastname, firstname" には適用されません)、誰かが SQL クエリを変更するのを手伝ってくれませんか? ただし、「親」の「SELECT」ステートメントでは、フィールド「頭字語」、「姓」、および「名前」はまだ存在している必要があります。

SELECT acronym, surname, givename
FROM
(
    SELECT acronym, surname, givename from table_1
    UNION
    SELECT user_pk, lastname, firstname  from table_2
)

ご協力ありがとうございました!

よろしく、シャブ

4

2 に答える 2

9

同じ文字列が 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 で一意) であると指定したことも、「頭字語」が主キーであると指定したこともないと思います。そのような詳細は役に立ち、あなたの質問に答える人々の心配を解消するでしょう (たとえ彼らが心配を表明していなくても)。また、あなたが話していることを知っていることを安心させます。

于 2012-04-06T21:10:47.377 に答える
-2
SELECT acronym as col, surname, givename from table_1
UNION
SELECT user_pk as col, lastname as surname, firstname as givename from table_2
于 2012-04-06T19:37:39.150 に答える