-1

次のようなデータベース構造があります。

Insuredテーブル

+-----------+--------------+-----+
| InsuredID |         Name | ... |
+-----------+--------------+-----+
|         1 |     John Doe | ... |
|         2 |   Bill Gates | ... |
|         3 |   Steve Jobs | ... |
+-----------+--------------+-----+

Accompanyテーブル

+-------------+-----------+---------------+-----+
| AccompanyID | InsuredID |          Name | ... |
+-------------+-----------+---------------+-----+
|           1 |         1 |    Joanna Doe | ... |
|           2 |         1 |    Johnny Doe | ... |
|           3 |         3 | Steve Ballmer | ... |
+-------------+-----------+---------------+-----+

どうすればこの結果を得ることができますか:

+----------------+-----+
|           Name | ... |
+----------------+-----+
|       John Doe | ... |
|     Joanna Doe | ... |
|     Johnny Doe | ... |
|     Bill Gates | ... |
|     Steve Jobs | ... |
|  Steve Ballmer | ... |
+----------------+-----+

クエリの順序を次のようにするにはどうすればよいInsuredですか。次のように注文する必要があります。AccompanyAccompany.InsuredIDInsured.InsuredIDAccompany

  1. John Doe (被保険者)InsuredID = 1
  2. Joanna Doe (伴奏)InsuredID = 1
  3. Johnny Doe (伴奏)InsuredID = 1
  4. ビル・ゲイツ (被保険者)InsuredID = 2
  5. スティーブ・ジョブズ (被保険者)InsuredID = 3
  6. スティーブ・バルマー(伴奏)InsuredID = 3
4

3 に答える 3

3

このようなものが動作するはずです:

select name
from (
 select insuredid, name, 0 ins
 from insured
 union all
 select insuredid, name, 1 ins
 from  accompany) isq
order by insuredid, ins

基本的に、偽の列を挿入して、行がどのテーブルから来ているかを識別しinsuredid、次に、任意のテーブル番号で並べ替えます。

于 2012-10-24T06:06:34.400 に答える
0

テストされていない、次のようなもの:

SELECT Name 
FROM (
      SELECT InsuredID, Name FROM Insured 
      UNION 
      SELECT InsuredID, Name FROM Accompany
     ) AS t
ORDER BY InsuredID
于 2012-10-24T06:11:27.207 に答える
0
SELECT 
    * 
FROM (SELECT NAme,.... FROM Insured
      UNION ALL
      SELECT Name,.... FROM Accompany)
ORDER BY Name
于 2012-10-24T06:05:43.857 に答える