On Apr 6, 2009, at 8:11 PM, David Gardner wrote:

>
> I am trying to get all of the rows in table A that do not have a match
> in table B. I believe the problem is that I am using a text foreign  
> key,
> and for the rows I am looking for the field will still have a value,  
> it
> just won't match anything in table B.
>
> To make things confusing the table 'qstatus' is mapped to a class  
> called
> 'JobInfo', also the qstatus table is a temporary table populated with
> values of what is currently running, so there are no foreign keys or
> indexes on the table, the qstat_table.c.job_number field is unique but
> isn't a primary key as far as PostgreSQL is concerned.
>
> This is what I am trying to do:
>
>    SELECT farm.qstatus.* FROM farm.qstatus
>    LEFT OUTER JOIN farm.job ON qstatus.job_name=job.name
>    WHERE job IS NULL
>    ORDER BY qstatus.job_name;

this is usually easiest via NOT EXISTS

select * from table where not exists (select 1 from othertable where  
othertable.foo=table.bar)

> mapper(JobInfo, qstat_table, primary_key=[qstat_table.c.job_number],
> properties={
>          'Chunk':relation(Chunk, lazy=True, uselist=False),
>          'Job' : relation(Job,
> primaryjoin=(qstat_table.c.job_name==job_table.c.name),
> foreign_keys=[qstat_table.c.job_name], lazy=True, viewonly=True,
> uselist=False)
>          }, save_on_init=False)

so a query like this would do it:

session.query(JobInfo).filter(~JobInfo.Job.has())


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

Reply via email to