[odb-users] ORDER BY clause in ODB query language

Markus Klemm markus at markusklemm.net
Thu Sep 10 04:13:11 EDT 2015


Alright I checked out tag 2.4.0 (which differs from the downloadable 2.4.0 package btw) and cherrypicked your commit.

It broke where I want to filter the files by the directories (1:n bidirect.) and still want a particular ordering of the files.

const std::vector<decltype(directory::directory_id)> &directories
odb::query<file> filter_by_directory_query = odb::query<file>::directory->directory_id.in_range(directories.cbegin(), directories.cend());
odb::query<file> order_by_query("ORDER BY" + odb::query<file>::read_time + "ASC");
odb::query<file> final_query = filter_by_directory_query + order_by_query;

I'm sorry in advance because I guess I did something wrong/unelegant again.

Resulting SQL Query:
SELECT [files].[file_id], [files].[file_name], [files].[directory_id], [files].[
fully_uploaded], [files].[partially_uploaded], [files].[read_time], [files].[upl
oader_log] FROM [files] LEFT JOIN [directories] AS [directory_id] ON [directory_
id].[directory_id]=[files].[directory_id] WHERE [directory_id].[directory_id] IN
 () ORDER BY [files].[read_time] ASC

Other querys looked fine:
 SELECT [directories].[directory_id], [directories].[full_path], [directories].[f
ile_type], [directories].[active], [directories].[added], [directories].[added_b
y] FROM [directories] ORDER BY [directories].[full_path] ASC
SELECT [file_types].[type_id], [file_types].[type_description], [file_types].[md
db_importer_flag], [file_types].[search_string], [file_types].[odbc_connection_t
emplate] FROM [file_types] WHERE [file_types].[type_id]=?
SELECT [directories].[directory_id], [directories].[full_path], [directories].[f
ile_type], [directories].[active], [directories].[added], [directories].[added_b
y] FROM [directories] ORDER BY [directories].[added] ASC

SELECT [files].[file_id], [files].[file_name], [files].[directory_id], [files].[
fully_uploaded], [files].[partially_uploaded], [files].[read_time], [files].[upl
oader_log] FROM [files] WHERE [files].[file_id]=?

Regards

Markus Klemm



More information about the odb-users mailing list