2017-05-17 2 views
1

Ich habe eine AbfragePython sqlalchemy Zählen doppelte Ergebnisse in Abfrage

allcategory = db.session.query(func.count(marketItem.subcategory).label("help"),Subcategories.subname1) 
allcategory = allcategory.join(Subcategories) 
allcategory = allcategory.filter(marketItem.subcategory == Subcategories.id) 
allcategory = allcategory.filter(marketItem.vendor_id==vendorprofile.id) 
allcategory = allcategory.group_by(marketItem.id) 
for allcat in allcategory.all(): 
    print(allcat) 

das ist gibt die Ergebnisse als

(1, 'Consoles') 
(1, 'Consoles') 
(1, 'Paintings') 
(1, 'Paintings') 
(1, 'Paintings') 

Ich möchte sie

(2, 'Consoles') 
(3, 'Paintings') 

Wenn es auch sein könnte in regelmäßigen sql-begriffen erklärt werden, das würde auch helfen.

allcategory = db.session.query(func.count(marketItem.subcategory).label("help"), 
           Subcategories.subname1) 
allcategory = allcategory.join(Subcategories) 
allcategory = allcategory.filter(marketItem.subcategory==Subcategories.id) 
allcategory = allcategory.filter(marketItem.vendor_id==vendorprofile.id) 
allcategory = allcategory.group_by(Sucategories.subname1) # < change here 
for allcat in allcategory.all(): 
    print(allcat) 

In SQL müssen Sie Gruppe durch die Felder, der nicht aggregiert werden - in diesem Fall Subcategories.subname1:

Antwort

2

Sie sollten durch Subcategory.subname1 Gruppierung werden.

+0

Arbeite ty! Ich war in der Nähe, schaute aber oben. – Anekdotin

+0

Sie sind herzlich willkommen. – bernie

Verwandte Themen