we should probably add a method to Query called exists() that just turns any 
query into "EXISTS (SELECT 1)", here's how to make it work for now

from sqlalchemy import exists

q1 = session.query(ImportedClientShare)
q1 = q1.join(ImportedPartnerShare,
                    ImportedClientShare.deal_id == ImportedPartnerShare.deal_id)
q1 = q1.join(Deal, ImportedClientShare.deal_id == Deal.id)
q1 = q1.filter(
    ImportedClientShare.client_id == client_id,
    ImportedPartnerShare.partner_id == partner_id,
    Deal.external_id != None,
)

q2 = session.query(ClientShare)
q2 = q2.join(PartnerShare, ClientShare.deal_id == PartnerShare.deal_id)
q2 = q2.join(Deal, ClientShare.deal_id == Deal.id)

q2 = q2.filter(
    ClientShare.client_id == client_id,
    PartnerShare.partner_id == partner_id,
    Deal.external_id == None,
)

q = session.query(exists(q1.with_entities('1').statement) | 
exists(q2.with_entities('1').statement))



On Mar 1, 2013, at 7:41 AM, Ladislav Lenart <lenart...@volny.cz> wrote:

> SELECT EXISTS(
>    SELECT 1
>    FROM
>        imported_client_share
>        JOIN imported_partner_share ON imported_client_share.deal_id =
> imported_partner_share.deal_id
>        JOIN deal ON imported_client_share.deal_id = deal.id
>    WHERE
>        imported_client_share.client_id = :client_id
>        AND imported_partner_share.partner_id = :partner_id
>        AND deal.external_id IS NULL
> ) OR EXISTS(
>    SELECT 1
>    FROM
>        client_share
>        JOIN partner_share ON client_share.deal_id = partner_share.deal_id
>        JOIN deal ON client_share.deal_id = deal.id
>    WHERE
>        client_share.client_id = :client_id
>        AND partner_share.partner_id = :partner_id
>        AND deal.external_id IS NULL
> )

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to