У меня есть две таблицы в PostgreSQL, если это имеет значение, с отношениями один ко многим. Мне нужно присоединиться к ним, чтобы для каждого «одного» я получал только один результат из таблицы «многие». Мало того, мне нужно выделить конкретные результаты из таблицы «многие».
TABLE_A ID | NAME | DATE | MORE COLS.... 1 | JOHN | 2012-01-10 | .... 2 | LIZA | 2012-01-10 | .... 3 | ANNY | 2012-01-10 | .... 4 | JAMES | 2012-01-10 | .... ... TABLE_B ID | CODE1 | CODE2 | SORT 1 | 04020 | 85003 | 1 1 | 04030 | 85002 | 4 2 | 81000 | 80703 | 1 3 | 87010 | 80102 | 4 3 | 87010 | 84701 | 5 4 | 04810 | 85003 | 1 4 | 04030 | 85002 | 4 4 | 04020 | 85003 | 1 ... QUERY RESULT ID | NAME | DATE | CODE1 | CODE2 1 | JOHN | 2012-01-10 | 04020 | 85003 2 | LIZA | 2012-01-10 | 81000 | 80703 3 | ANNY | 2012-01-10 | 87010 | 80102 4 | JAMES | 2012-01-10 | 04810 | 85003 ...
Столбец SORT в TABLE_B фактически является последним переупорядоченным символом в CODE2. CODE2 может заканчиваться на 1-9, но 3 важнее, чем 5, 7, 4, 2, 1, 0, 6, 8, 9, следовательно, 3 -> 1, 5 -> 2, 7 -> 3 и так далее. вперед.
Проблема, с которой я столкнулся, заключается в том, что мне нужна строка из TABLE_B, где sort - это наименьшее число. В некоторых случаях существует несколько нижних регистров (см. ID = 4 в TABLE_B), тогда не имеет значения, какая из строк с самым низким идентификатором выбрана, только то, что для этого идентификатора есть один результат.
EXPLAIN ANALYZE
. 18.09.2012