2013-03-19 19 views
6

olmaksızın 2 tabloya nasıl katılırım Iki farklı tablodan SUM(column_a) almak ve farklarını almak istiyorum. MySQL kullanıyorum. Bir ON yan tümcesi

Table B's sum = 4001

Table A's sum = 1234

benim ON maddesi koymak için emin değilim:

SELECT 
    SUM(a.column1) AS table_a_sum, 
    SUM(b.column1) AS table_b_sum, 
    SUM(a.column1) - SUM(b.column1) AS difference 
FROM table_a a 
JOIN table_b b 
ON ?????? 
+0

Bir yan not olarak '' '' '' '' '' '' '' 'tablonun özelliklerini kullanmak zorunda değilsiniz tablodan select 1'den 1'e tabloA iç birleştirme tablosuna * sahip olabilirsiniz ve bir çapraz birleştirmeyle aynı şeyi elde edersiniz –

cevap

11

A çapraz katılmak koşul olmaksızın katılırlar. MySQL/join/inner joincross join özdeş olduğunu

FROM table_a a 
CROSS JOIN table_b b 

Not: bir çapraz tekrarlar sağ tablosundaki her satır için sol tablo her satır katılması. Yani yazabiliriz: çapraz katılmak olarak

FROM table_a a 
JOIN table_b b 

sürece on maddesini ihmal olarak, bu işe yarar.

İki tablodan iki sütun toplamak isterseniz, satırları tekrarladığından çapraz birleştirmeler işe yaramaz. Çok şişirilmiş numaralar alırsın. Toplamlar için daha iyi bir yaklaşım, @sgeddes yanıtı başına alt sorgular kullanır. Tablolar arasında cross join Doing

select a.suma, b.sumb, a.suma - b.sumb 
from (select sum(a.column1) as suma from tablea) a cross join 
    (select sum(b.column1) as sumb from tableb) b 

:

Daha sonra ilk özetlemek ve istediğiniz
SELECT 
    table_a_sum, 
    table_b_sum, 
    table_a_sum - table_b_sum AS difference 
FROM 
    (SELECT SUM(column1) table_a_sum FROM table_a) a, 
    (SELECT SUM(column1) table_b_sum FROM table_b) b 
4

Burada alt sorgular kullanarak tek seçenek toplamı dağıtacak kartezyen bir ürün üretecek.

+1

+ 1 Yeniden okuma konusunda, OP'nin yapmak istediği şey budur. – Andomar

0

hesaplamaları yapmak: Bunu yapmanın çeşitli yolları vardır -

İlgili konular