greenlion / PHP-SQL-Parser

A pure PHP SQL (non validating) parser w/ focus on MySQL dialect of SQL
BSD 3-Clause "New" or "Revised" License
601 stars 156 forks source link

Add support for orderByPosition direction (ie. ORDER BY 1 ASC/DESC) #344

Closed j-angnoe closed 2 years ago

j-angnoe commented 2 years ago

Currently the PHPSQLCreator will ignore the Order direction when using a positional ORDER BY clause (i.e. ORDER BY 1 ASC, ORDER BY 3 DESC). The reason seems that the OrderBuilder reuses the PositionBuilder (which is also used in GROUP BY statements). This PositionBuilder does not take into account a position.

In SQL it is valid to use a positional order by and being able to sort ascending and descending, so I think this should be reflected by the PHPSQLCreator. That's why i've decided create a new OrderByPositionBuilder which does take into account the order direction. The orderbyposition test has also been updated to reflect this change.