2010-11-01 6 views
2

J'ai écrit la requête suivante.Requête SQL avancée avec sous-requêtes, fonctions group by, count et sum dans 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; 

Il trouve la somme d'une colonne et le nombre de lignes qui produisent la somme ainsi que certaines données associées d'une autre table. (N'hésitez pas à optimiser si vous pensez qu'il peut être amélioré)

J'ai besoin de convertir ceci en SQLAlchemy mais je n'ai aucune idée par où commencer. J'apprécierais n'importe quel conseil.

Répondre

3

Voici mon re-écriture de votre requête:

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 

Ne peut pas vous aider avec la partie SQLAlchemy, désolé.

+0

Super - votre requête est beaucoup mieux! Juste besoin d'être converti en SQLAlchemy - tous les preneurs? :-) – eski009