2017-11-09 3 views
1

を持つグループ:結果として組合複数のテーブルと集計(SQLiteの)

table1

id | part | price 
1 | ox900 | 100 
2 | ox980 | 200 

table2

id | part | price 
1 | ox560 | 560 
2 | ox980 | 120 

私が欲しいですそのようなスキーマを取得する:

SELECT * 
FROM (select part, price from supportContacts 
union all 
select part, price from supportContacts2) 
group by part 

が、それはまさに私が達成したいものではありません。

id | part | priceTable1 | priceTable2 | minPrice 
1 | ox900 | 100   |    | 100 
1 | ox980 | 200   | 120   | 120 
1 | ox560 |    | 560   | 560 

が、今私は、このようなクエリを持っている...それは minPrice列なしでできる簡単にします。

私は上記のことを何とかしてもいいですか?

もフィドル:http://sqlfiddle.com/#!7/f7401/7/0

+0

代わりに外部結合を行います。 – jarlh

答えて

1

SQLiteのは、完全な外部結合をサポートするので、最初にすべての部品のリストを取得し、左外で、その価格を見ていないが加わり:

SELECT part, 
     table1.price AS priceTable1, 
     table2.price AS priceTable2, 
     min(ifnull(table1.price, 'inf'), 
      ifnull(table2.price, 'inf')) AS minPrice 
FROM (SELECT part FROM table1 
     UNION 
     SELECT part FROM table2) 
LEFT JOIN table1 USING (part) 
LEFT JOIN table2 USING (part); 

fiddle

+0

良いアイデア...しかし、分私はそこにnullを持つことができます - それは正しくありません:) – brabertaser19

+0

http://sqlfiddle.com/#!7/f7401/19/0 – brabertaser19

+0

おっと、非集計 '分( ) 'NULLを無視しません... –

関連する問題