0

私は、4つの会社(このクエリでは合計8つのDB)を持つ各会社に2つのテーブルがあるデータベースを使用していますが、自分の管理外の理由で変更できません。これもsqliteDBです。

私のアプリは現在、すべてのデータを取得するために8回のラウンドトリップを実行する必要があります。それを1つのテーブルビュークエリに統合したいのですが、データを機能させる方法でデータを組み合わせる方法がわかりません。これがテーブルの例です。

表1(タイプA)

name    zone
ABCD    ABC1
DBAA    CBA1

表2(タイプA)

name   zone
ABCD   1234
DBAA   4321

表1(タイプB)

zone   weight   rate  
ABC1      1     0.50  
CBA1      2     0.88

表2(タイプB)

zone   weight   rate
1234      1     0.52
4321      2     0.80

最後に、ビューを次のように表示します。

name   weight   Table 1 rate  Table 2 rate
CABA      1         0.52          0.50
AEAS      2         0.80          0.88

私は自分のSQLステートメントに対してこれを試しました:

SELECT 1A.name, 1B.weight, 1B.rate as A from 1A, 1B WHERE 1A.zone = 1B.zone
UNION ALL
SELECT 2A.name, 2B.weight, 2B.rate as B from 2A, 2B WHERE 2A.zone = 2B.zone

また、ユニオンの読み取り列数が一致している必要があるため、いくつかの結合ステートメントを試しましたが、正しいクエリを実行できないようです。私が間違っていること、またはクエリでこれをどのように達成できるかについてのアイデアはありますか?

どんな助けでも大歓迎です!

ここでフィドルの例で更新:http ://sqlfiddle.com/#!5 / 37c19 / 3/0

4

1 に答える 1

1

これは、あなたの例に似たものを生成するクエリです:

SELECT 
  ZonesOne.name
  , RatesOne.weight
  , RatesOne.rate as Table1Rate
  , RatesTwo.Rate AS Table2Rate

FROM ZonesOne, RatesOne, RatesTwo 

WHERE 
  RatesOne.zone = ZonesOne.zone
  AND RatesOne.Weight = RatesTwo.weight

UNION ALL

SELECT 
  ZonesTwo.name
  , RatesOne.weight
  , RatesOne.rate as Table1Rate
  , RatesTwo.Rate AS Table2Rate

FROM ZonesTwo, RatesOne, RatesTwo     

WHERE 
  RatesOne.zone = ZonesTwo.zone
  AND RatesOne.Weight = RatesTwo.weight

ただし、Table 1 RateTable 2 Rateは入れ替わっているようです。また、からのデータにZonesTwoは「DBAA」の2つのエントリがあります。

于 2013-03-15T11:49:36.517 に答える