0

テーブル間の二重結合を使用してビューを作成しようとしています。

私はいくつかの旅行ソフトウェアに取り組んでおり、休日の予約を管理しています。人が支払うさまざまなアイテムは、さまざまな通貨である可能性があります。

予約表と通貨表があります。

人が支払うことができるさまざまなアイテムがあり、すべてが異なるテーブルに格納されています。支払い項目タイプごとの未払い総額を表示するビューを作成しました。

例: 送金の場合:

BookingID  CurrencyID  TotalTransfersPrice
1          1           340.00
2          1           120.00
2          2           100.00

例: Extras の支払い義務:

BookingID  CurrencyID  TotalExtrasPrice
1          1           200.00
1          2           440.00
2          1           310.00

これまでのところ、すべて順調です。

私がやりたいのは、これをすべてまとめたマスター ビューを作成することです。

BookingID  CurrencyID  TotalExtrasPrice  TotalTransfersPrice
1          1           200.00            340.00
1          2           440.00            NULL
2          1           310.00            120.00
2          2           NULL              100.00        

上記の作り方がわかりません。BookingID と CurrencyID の両方に対して結合を行う必要があると推測しているので、二重結合を試してみました。

何か案は?

ありがとう!

フィル。

4

5 に答える 5

1

為にSQL Server

このクエリでは、各 { BookingId, } がおよびテーブル CurrencyIdに複数の行を持つことができます。TransferExtras

あなたが述べたので

支払い項目タイプごとの未払い総額を表示するビューを作成しました。

私はBookinIDとCurrencyIDでそれらを蓄積しています

 SELECT ISNULL(transfers.BookingId, extras.BookingId) AS BookingId,  
       ISNULL(transfers.CurrencyId, extras.CurrencyId) AS CurrencyId,
       SUM(TotalExtrasPrice) AS TotalExtrasPrice,
       SUM(t.TotalTransfersPrice) AS TotalTransfersPrice
FROM transfers
FULL OUTER JOIN extras ON transfers.BookingId = extras.BookingId and transfers.CurrencyId = extras.CurrencyId
GROUP BY ISNULL(transfers.BookingId, extras.BookingId),ISNULL(transfers.CurrencyId, extras.CurrencyId)
于 2013-07-28T08:45:54.653 に答える
0

これは機能します。必要なのは単純な完全外部結合だけです。

SELECT "BookingID", "CurrencyID",
       ext."TotalExtrasPrice", trans."TotalTransfersPrice"
FROM Transfers trans FULL OUTER JOIN Extras ext
USING ("BookingID", "CurrencyID");

Oracleを使用したSQLFiddle のデモ。

于 2013-07-28T09:01:40.573 に答える