| 5 database.mysql.inc | db_distinct_field($table, $field, $query) |
| 5 database.mysqli.inc | db_distinct_field($table, $field, $query) |
| 5 database.pgsql.inc | db_distinct_field($table, $field, $query) |
| 6 database.inc | db_distinct_field($table, $field, $query) |
Wraps the given table.field entry with a DISTINCT(). The wrapper is added to the SELECT list entry of the given query and the resulting query is returned. This function only applies the wrapper if a DISTINCT doesn't already exist in the query.
Parameters
$table Table containing the field to set as DISTINCT:
$field Field to set as DISTINCT:
$query Query to apply the wrapper to:
Return value
SQL query with the DISTINCT wrapper surrounding the given table.field.
Related topics
1 call to db_distinct_field()
File
- includes/
database.mysql.inc, line 436 - Database interface code for MySQL database servers.
Code
function db_distinct_field($table, $field, $query) {
$field_to_select = 'DISTINCT(' . $table . '.' . $field . ')';
// (?<!text) is a negative look-behind (no need to rewrite queries that already use DISTINCT).
return preg_replace('/(SELECT.*)(?:' . $table . '\.|\s)(?<!DISTINCT\()(?<!DISTINCT\(' . $table . '\.)' . $field . '(.*FROM )/AUsi', '\1 ' . $field_to_select . '\2', $query);
}
Login or register to post comments