As you say, .join() produces an inner join by default. You can specify isouter=True to get a left outer join (or call the .outerjoin method instead), and full=True to get a full outer join. I think you'd get a cross join if you just didn't call the .join() method at all.
Simon On Fri, Feb 9, 2018 at 4:52 PM, Jeremy Flowers <jeremy.g.flow...@gmail.com> wrote: > I'm wondering if this is part of the secret sauce: > http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.join > Also I guess cross-join may be another join type. > JOIN is INNER by default.. > https://stackoverflow.com/a/19646594/495157 > > > On Friday, 9 February 2018 16:03:03 UTC, Jeremy Flowers wrote: >> >> I've got a domain model out of sqlacodegen. >> I need to do a SQL a join between two tables, with no inferred >> foreign-keys in the database I'm working on. >> Consequently there isn't a relationship defined for the specific columns I >> need to join >> >> 1) I need a INNER JOIN for the first. >> 2) But later I need multiple LEFT JOINs on other tables, I've not yet >> introduced to the code.. >> >> (1) How would I go about doing the INNER JOIN first?: (What is the >> default? left, inner etc?) >> >> print(session.query(Jobmst.jobmst_type, >> Jobmst.jobmst_name, >> Jobmst.jobmst_prntname, >> Jobmst.jobmst_prntid, >> Jobmst.jobmst_evntoffset, >> Jobmst.evntmst_id, >> Jobdtl.jobdtl_proxy, >> Jobdtl.jobdtl_proxy2, >> Jobdtl.jobdtl_inhagent, >> Jobdtl.jobdtl_inhevent, >> Jobdtl.jobdtl_cmd, >> Jobdtl.jobdtl_params, >> Jobdtl.jobdtl_fromtm, >> Jobdtl.jobdtl_untiltm, >> Jobdtl.jobdtl_timewin, >> Jobdtl.jobdtl_interval, >> Jobdtl.jobdtl_intervalcnt >> ).join(Jobdtl, Jobmst.jobmst_id==Jobdtl.jobdtl_id,) >> .first()) >> >> >> Why doesn't join have another parameter where I can say, 'inner', 'left', >> etc? >> Per the join types listed here: >> https://www.w3schools.com/sql/sql_join.asp >> >> I've seen stuff here >> >> http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.join.params.isouter >> And here... >> >> http://docs.sqlalchemy.org/en/latest/orm/loading_relationships.html#sqlalchemy.orm.joinedload >> But if I understand it correctly I'd need a relationship defined for >> joinedload. >> >> Can someone advise. Thanks >> > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > 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 email@example.com. > Visit this group at https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- 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 firstname.lastname@example.org. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.