@@ -232,6 +232,38 @@ void shouldRenderJoinWithInlineQuery() {
232232 + "ON one.department_id = department.id" );
233233 }
234234
235+ @ Test // GH-1362
236+ void shouldRenderJoinWithInlineQueryAndWhereClause () {
237+ Table merchantCustomers = Table .create ("merchants_customers" );
238+ Table customerDetails = Table .create ("customer_details" );
239+ BindMarker merchantIdMarker = SQL .bindMarker (":merchantId" );
240+
241+ Select innerSelect = Select .builder ()
242+ .select (customerDetails .column ("user_id" ).as ("user_id" ), customerDetails .column ("user_id" ).as ("name" ))
243+ .from (customerDetails ).join (merchantCustomers )
244+ .on (merchantCustomers .column ("user_id" ).isEqualTo (customerDetails .column ("user_id" ))).where (
245+ customerDetails .column ("user_id" ).isEqualTo (merchantCustomers .column ("user_id" ))
246+ .and (merchantCustomers .column ("merchant_id" ).isEqualTo (merchantIdMarker ))).build ();
247+
248+ InlineQuery innerTable = InlineQuery .create (innerSelect , "inner" );
249+
250+ Select select = Select .builder ().select (merchantCustomers .asterisk ()) //
251+ .from (merchantCustomers ) //
252+ .join (innerTable ).on (innerTable .column ("user_id" ).isEqualTo (merchantCustomers .column ("user_id" ))) //
253+ .build ();
254+
255+ String sql = SqlRenderer .toString (select );
256+
257+ assertThat (sql ).isEqualTo ("SELECT merchants_customers.* FROM merchants_customers " + //
258+ "JOIN (" + //
259+ "SELECT customer_details.user_id AS user_id, customer_details.user_id AS name " + //
260+ "FROM customer_details " + //
261+ "JOIN merchants_customers ON merchants_customers.user_id = customer_details.user_id " + //
262+ "WHERE customer_details.user_id = merchants_customers.user_id AND merchants_customers.merchant_id = :merchantId" + //
263+ ") inner " + //
264+ "ON inner.user_id = merchants_customers.user_id" );
265+ }
266+
235267 @ Test // GH-1003
236268 void shouldRenderJoinWithTwoInlineQueries () {
237269
0 commit comments