0

スタッフの住所 (自宅と連絡先住所) を照会しようとしています。

私がスタッフテーブルに持っているのは

Staff_ID, First_Name, Last_Name, Home_Adress, Corr_Address

アドレステーブルの場合は

Address_ID, Line1, Line2, Line3, Post_Code

どちらのアドレスも Address_ID にリンクされています。私はサイトを読んだことがありますが、これに対するアプローチは Union または Join のようですが、書き留める方法がよくわかりません。

SELECT First_Name, Last_Name, Home_Adress, Corr_Address FROM STAFF
UNION
SELECT Address_ID FROM ADDRESS
GROUP BY First_Name

いくつかの助けをいただければ幸いです、ありがとう!

4

1 に答える 1

2

JOINテーブルAddressに 2 回アクセスする必要がありHomeAddressますCorr_Address

SELECT
  s.First_Name,
  s.Last_Name,
  ah.Line1     AS HomeLine1,
  ah.Line2     AS HomeLine2,
  ah.Line3     AS HomeLine3,
  ah.Post_Code AS HomePost_Code,
  ac.Line1     AS CorrLine1,
  ac.Line2     AS CorrLine2,
  ac.Line3     AS CorrLine3,
  ac.Post_Code AS corrPostCode
FROM Staff AS s
INNER JOIN address AS ah ON s.Home_Address = ah.address_ID
INNER JOIN address AS ac ON s.corr_address = ac.addressid;

アップデート:

各アドレスのアドレスの詳細を 1 つのフィールドにまとめるには、次のようにします。

SELECT
  s."First_Name",
  s."Last_Name",
  ah."Line1" || ', ' || ah."Line2" || ', ' || ah."Line3" || ', ' || ah."Post_Code" AS HomeAddress,
  ac."Line1" || ', ' || ac."Line2" || ', ' || ac."Line3" || ', ' || ac."Post_Code" AS CorrAddress
FROM Staff s
INNER JOIN address ah ON s."Home_Adress" = ah."Address_ID"
INNER JOIN address ac ON s."Corr_Address" = ac."Address_ID";

ここで実際にそれを見てください:

これにより、次のようなものが得られます。

| FIRST_NAME | LAST_NAME |                   HOMEADDRESS |                   CORRADDRESS |
------------------------------------------------------------------------------------------
|        foo |       bar | line11, line12, line13, 34222 |   line12, line22, line32, 653 |
|       foo2 |      bar2 | line13, line23, line33, 34545 | line14, line25, line35, 33452 |
于 2013-05-18T00:19:36.713 に答える