diff --git a/js/src/database/multi_table_query.js b/js/src/database/multi_table_query.js index f55f8131b7..cb58ec89f6 100644 --- a/js/src/database/multi_table_query.js +++ b/js/src/database/multi_table_query.js @@ -9,7 +9,7 @@ * */ -/* global generateFromBlock, generateWhereBlock */ // js/database/query_generator.js +/* global generateFromBlock, generateWhereBlock, generateOrderBlock */ // js/database/query_generator.js /** * js file for handling AJAX and other events in /database/multi-table-query @@ -125,6 +125,11 @@ AJAX.registerOnload('database/multi_table_query.js', function () { query += generateWhereBlock(); } + var $orderParts = generateOrderBlock(); + if ($orderParts !== '') { + query += '\nORDER BY ' + $orderParts; + } + query += ';'; editor.getDoc().setValue(query); }); diff --git a/js/src/database/query_generator.js b/js/src/database/query_generator.js index 329a671ce6..004d9753a1 100644 --- a/js/src/database/query_generator.js +++ b/js/src/database/query_generator.js @@ -97,6 +97,22 @@ function generateWhereBlock () { return query; } +function generateOrderBlock() { + var parts = []; + $('.tableNameSelect').each(function () { + var criteriaDiv = $(this).siblings('.jsCriteriaOptions').first(); + var useCriteria = criteriaDiv.find('input.sort_or:checked'); + if (useCriteria.length > 0 && $(this).val() !== '' && $(this).siblings('.criteria_col').first().prop('checked')) { + var tableName = $(this).val(); + var tableShort = $(this).siblings('.table_alias').val(); + var ref = '`' + Functions.escapeBacktick(tableShort !== '' ? tableShort : tableName) + '`'; + ref += '.`' + Functions.escapeBacktick($(this).parent().find('.opColumn').first().val()) + '`'; + parts.push(ref + ' ' + useCriteria.val()); + } + }); + return parts.join(', '); +} + function generateJoin (newTable, tableAliases, fk) { var query = ''; query += ' \n\tLEFT JOIN ' + '`' + Functions.escapeBacktick(newTable) + '`'; diff --git a/templates/database/multi_table_query/form.twig b/templates/database/multi_table_query/form.twig index fbc9bf3665..5313b0f61f 100644 --- a/templates/database/multi_table_query/form.twig +++ b/templates/database/multi_table_query/form.twig @@ -65,8 +65,8 @@