Сопоставление парных значений с использованием таблицы поиска в Access / SQL - PullRequest
0 голосов
/ 21 февраля 2011

Это может быть кошмаром.

Допустим, у меня есть две строки данных в двух разных таблицах, каждая строка содержит один символ каждая.A - это Row1, а B - это Row2 в таблице 1, а в таблице 2 - обратный.B это Row1, а A это Row2.

У меня также есть третья таблица, которая содержит три столбца.Первые два столбца - это столбцы, к которым нужно присоединиться, а третий - итоговое значение, в зависимости от того, что было объединено в первых двух столбцах.

A,A= 1
A,B=.8
A,C=.2
B,A=.8
B,B= 1
B,C=.6
C,A=.2
C,B=.6
C,C= 1

Что я пытаюсь сделать, вПо сути, попробуйте найти пары с наивысшим рейтингом из Таблицы1 и Таблицы2, используя соответствующие значения в Таблице 3 .

A,A= 1
B,B= 1

Из-за совпадающих A в Table1 + 2 и совпадающих B в Table1 + 2.Вместо этого я забыл, что просто бесцельно объединяя таблицы, я получаю это:

A,A= 1
A,B=.8
B,A=.8
B,B= 1

Однако я получаю ВСЕ возможные пары, и это не сработает.И проблема здесь в том, что я не могу выполнить прямое СОЕДИНЕНИЕ между Table1 + 2, потому что значение в Table1 может не совпадать с Table2, например ...

Row1 и Row2 в Table1 - это A, B иСтрока1 и Строка2 в Таблице 2 - это B, C.Если я сделаю прямое JOIN, значения A и C не будут совпадать друг с другом, оставив меня только с парами B.

Хотя я подумал еще об одной проблеме с этим! При попытке использовать подзапрос, подзапрос будет постоянно повторяться ... это означает, что ранее выбранные строки будут снова доступны для захвата в следующий раз, что приведет к неправильным значениям.

Например,с A, B и B, C ... Я бы ожидал, что это будет возвращено через подзапросы:

A,B=.8
B,B= 1

Если, конечно, не существует способа дисквалифицировать строку для повторного использования.Есть предложения или идеи?Я использую Access, но я уверен, что эти концепции применимы к любому решению для базы данных.

...