<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:16.363636016845703px">Hello,</span><div><font face="arial, sans-serif"><span style="font-size:16.363636016845703px"><br></span></font></div><div><font face="arial, sans-serif"><span style="font-size:16.363636016845703px">My apologies, I sent my previous email by mistake before I'd finished composing it. Here is the completed email:<br>
</span></font><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><br></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">Is there an S-SQL expression which will produce nested join expressions like this one:</div>
<div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><br></div><div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">select * from table_1</div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">
  inner join table_2</div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">    inner join table_3 on table_2.c = table_3.d</div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">
  on table_1.a = test_2.b;</div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><br></div>(This form is described in section 7.2.1.1 of the Postgres documentation, which says, "Joins of all types can be chained together or nested: either or both T1 and T2 can be joined tables.")</div>
<div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><br></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">I know I can do this:</div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">
<br></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><div>(:select '* :from 'table-1</div><div>               :inner-join 'table-2 :on (:= 'table-1.a 'table-2.b)</div><div>
               :inner-join 'table-3 :on (:= 'table-2.c 'table-3.d))</div></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><br></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">
<font face="arial, sans-serif">which produces a chained join expression:</font></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><font face="arial, sans-serif"><br></font></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px">
<font face="arial, sans-serif">(SELECT * FROM table_1</font></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><font face="arial, sans-serif">  INNER JOIN table_2 ON (table_1.a = table_2.b) INNER JOIN table_3 ON (table_2.c = table_3.d))<br>
</font></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><font face="arial, sans-serif"><br></font></div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><font face="arial, sans-serif">However, these chained join expressions behave differently than nested ones when mixing different types of joins (inner with outer, etc.), and I need the behavior of the nested expression. I tried this:</font></div>
</div><div style="font-family:arial,sans-serif;font-size:16.363636016845703px"><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif"><span style="font-size:16.363636016845703px"><div>(:select '* :from 'table-1</div>
<div>                 :inner-join 'table-2</div><div>                 :inner-join 'table-3 :on (:= 'table-2.c 'table-3.d)</div><div>                 :on (:= 'table-1.a 'table-2.b))</div><div><br></div>
<div>But it produces the error "Incorrect join form in select."</div><div><br></div><div>Am I missing the correct syntax, or is this unsupported right now?</div><div><br></div><div>Thank you,</div><div>-Eli</div>
<div><br></div><div><br></div></span></font></div></div>