Changeset 16034
- Timestamp:
- 2008-06-17T14:22:52+12:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gsdl/trunk/src/lib/sqlitedbclass.cpp
r15947 r16034 112 112 113 113 // Get the entries in the "document_metadata" table where the element and value matches those specified 114 text_t sql_cmd; 115 if (sort_by_metadata_element_name == "") 116 { 117 // No sorting required 118 sql_cmd = "SELECT docOID FROM document_metadata WHERE element='" + sqlite_safe(metadata_element_name) + "' AND value='" + sqlite_safe(metadata_value) + "'"; 119 } 120 else 121 { 122 // Sort the documents by a certain metadata element 123 // John Thompson thinks this may not be the most efficient solution, and recommends using ON instead of WHERE 124 sql_cmd = "SELECT b.docOID FROM document_metadata AS a LEFT JOIN document_metadata AS b USING (docOID) WHERE a.element='" + sqlite_safe(metadata_element_name) + "' AND a.value='" + sqlite_safe(metadata_value) + "' AND b.element='" + sqlite_safe(sort_by_metadata_element_name) + "' ORDER BY b.value"; 125 } 114 text_t sql_cmd = "SELECT docOID FROM document_metadata WHERE element='" + sqlite_safe(metadata_element_name) + "' AND value='" + sqlite_safe(metadata_value) + "'"; 115 116 // If we're sorting the documents by a certain metadata element, extend the SQL command to do this 117 if (sort_by_metadata_element_name != "") 118 { 119 sql_cmd = "SELECT docOID FROM (" + sql_cmd + ") LEFT JOIN (SELECT docOID,value from document_metadata WHERE element='" + sqlite_safe(sort_by_metadata_element_name) + "') USING (docOID) ORDER by value"; 120 } 121 122 // Perform the SQL request 126 123 vector<text_tmap> sql_results; 127 124 if (!sqlgetarray(sql_cmd, sql_results) || sql_results.size() == 0)
Note:
See TracChangeset
for help on using the changeset viewer.