Note that there are some explanatory texts on larger screens.

plurals
  1. POSQLAlchemy: select over multiple tables
    text
    copied!<p>I wanted to optimize my database query:</p> <pre><code>link_list = select( columns=[link_table.c.rating, link_table.c.url, link_table.c.donations_in], whereclause=and_( not_(link_table.c.id.in_( select( columns=[request_table.c.recipient], whereclause=request_table.c.donator==donator.id ).as_scalar() )), link_table.c.id!=donator.id, ), limit=20, ).execute().fetchall() </code></pre> <p>and tried to merge those two selects in one query:</p> <pre><code>link_list = select( columns=[link_table.c.rating, link_table.c.url, link_table.c.donations_in], whereclause=and_( link_table.c.active==True, link_table.c.id!=donator.id, request_table.c.donator==donator.id, link_table.c.id!=request_table.c.recipient, ), limit=20, order_by=[link_table.c.rating.desc()] ).execute().fetchall() </code></pre> <p>the database-schema looks like:</p> <pre><code>link_table = Table('links', metadata, Column('id', Integer, primary_key=True, autoincrement=True), Column('url', Unicode(250), index=True, unique=True), Column('registration_date', DateTime), Column('donations_in', Integer), Column('active', Boolean), ) request_table = Table('requests', metadata, Column('id', Integer, primary_key=True, autoincrement=True), Column('recipient', Integer, ForeignKey('links.id')), Column('donator', Integer, ForeignKey('links.id')), Column('date', DateTime), ) </code></pre> <p>There are several links (donator) in request_table pointing to one link in the link_table. I want to have links from link_table, which are not yet "requested".</p> <p>But this does not work. Is it actually possible, what I'm trying to do? If so, how would you do that?</p> <p>Thank you very much in advance!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload