2012-01-26 19 views
2

同じ構造を持つ複数のテーブルがあります。 JOINなしでこれらのテーブルからSUM(フィールド)を選択するにはどうすればよいですか?JOINなしで複数のテーブルのSQL select sum

たとえば、私が実行した場合、:

SELECT SUM(views) FROM tb1, tb2 WHERE 1 

それは「曖昧であるフィールドリストの列 『ビュー』」と言われます。

UNIONを使用する方法はありますか?

+0

はありますすべてのテーブルから1つの値を取得しようとしていますか?またはテーブルが同期する場所? – Brian

答えて

3

私はこれはあなたを取得すべきだと思う:

SELECT SUM(views) 
FROM (
    SELECT views FROM table1 
     UNION ALL 
    SELECT views FROM table2 
) A 

あなたがCartesian productを作っているので、あなたがエラーを取得している理由は、(1テーブル内のすべての行が他のテーブル内のすべての行に一致しています)両方のテーブルにはviewの列があるため、どちらが取っているのか分かりません。しかし、そのデカルト結合はあなたが探している合計を(おそらく)与えません。

+0

私は "すべての派生テーブルは、独自のエイリアスを持たなければならない"というエラーが出ます。 – DrXCheng

+0

各テーブルにエイリアスを追加します。たとえば、FROM table1 AS T1、FROM table2 T2として表示されます。 – Sparky

+0

実際には、サブクエリに相関名を追加するだけで済みます。私は答えを決めた。 – bhamby

0

構造が同じである場合:

SELECT SUM(views) 
FROM (tb1 UNION tb2) 
WHERE 1 

それは(私はそれをテストするための便利なMySQLを持っていない)、仕事しようとしない場合:

SELECT SUM(views) 
FROM (
    (SELECT views FROM tb1) 
    UNION 
    (SELECT views FROM tb2) 
    ) 
WHERE 1 
+0

連合は重複した値を押さえないので、1つの値が複数の列に表示されると、偽の合計が得られます。 – Mithrandir

+0

真ですが、UNION ALLを使用して重複を抑制することはできません – Sparky

0
SELECT SUM(views) FROM 
(
    SELECT views FROM tb1 
    UNION ALL 
    SELECT views FROM tb2 
) t 
関連する問題