LINUX.ORG.RU

Подскажите, как сделать такой запрос в peewee

 ,


0

1

Есть три таблицы:

class House(Model):
    
    name = CharField()
    location = CharField()
    class Meta:
        datadb = db

class Contract(Model):
    
    name = CharField()
    surname = CharField()
    house = ForeignKeyField(House, related_name='contracts')
    class Meta:
        datadb = db

class Payment(Model):
    
    datestamp = DateField()
    Value = FloatField()
    contract = ForeignKeyField(Contract, related_name='payments')
    class Meta:
        datadb = db

Как в один запрос вывести таблицу такого содержания:

house.name, house.location, total_contracts(count), all_payments_sum 
★★★★★

Раз советчиков нет, придется документацию читать =)

Ответ:


query = SelectQuery(House, 
                    House, 
                    fn.Count(Contract.id).alias('ccount'),
                    fn.Sum(Payment.value).alias('howmuch')
                    )\
        .join(Contract, JOIN_LEFT_OUTER)\
        .join(Payment, JOIN_LEFT_OUTER)\
        .group_by(House)
        
for item in query:
    print item.name, item.location, item.ccount, item.howmuch

Единственное не понятно, нафига в SelectQuery(House, House,...) дважды писать имя класса.

Siado ★★★★★
() автор топика
Ответ на: комментарий от Siado

UPD: Понятно нафига, для ограничения выборки.

Siado ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.