我正在使用一个数据库,该数据库每个公司有4个表,有4个公司(此查询共有8个DB),并且由于我无法控制的原因无法更改。这也是一个sqlite DB。
我的应用目前必须进行8次往返才能获得所有数据。我想将其整合到一个表视图查询中,但我无法弄清楚如何以一种使其工作的方式组合数据。这是表格的一个例子。
表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
在阅读联合之后,我还尝试了几个联接语句,但是我似乎无法找到正确的查询。我有什么想法,或者我如何用查询来实现这个目标?
非常感谢任何帮助!
在此处更新了Fiddle示例:http://sqlfiddle.com/#!5/37c19/3/0
答案 0 :(得分: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 Rate
和Table 2 Rate
似乎已切换。此外,您ZonesTwo
的数据有两个“DBAA”条目。