2010-11-01 51 views
2

我已經寫了下面的查詢。高級SQL查詢與子查詢,分組數,總和函數SQLalchemy

select distinct(table3.*), 
     (select count(*) 
     from table2 
     where table2.cus_id = table3.id) as count, 
     (select sum(amount) 
     from table2 
     where table2.cus_id = table3.id) as total 
    from table2, 
     table1, 
     table3 
where table3.id = table2.cus_id 
    and table2.own_id = table1.own_id; 

它找到一個列和產生總和的行數以及來自另一個表的一些關聯數據的總和。 (如果你認爲它可以改進,可以隨意優化)

我需要將它轉換爲SQLAlchemy,但不知道從哪裏開始。我會很感激任何建議。

回答

3

這是你的查詢我重新寫:

SELECT t3.*, 
     x.count, 
     x.amount 
FROM TABLE3 t3 
JOIN (SELECT t2.cus_id 
       COUNT(*) AS count, 
       SUM(t2.amount) AS total 
     FROM TABLE2 t2 
     WHERE EXISTS(SELECT NULL 
         FROM TABLE1 t1 
         WHERE t1.own_id = t2.own_id) 
    GROUP BY t2.cus_id) x ON x.cus_id = t3.id 

不能幫助你的SQLAlchemy的一部分,對不起。

+0

太棒了 - 您的查詢更好!只需要將它轉換爲SQLAlchemy - 任何接受者? :-) – eski009 2010-11-02 11:26:47