#sql #string #postgresql #substring #letter
#sql #строка #postgresql #подстрока #письмо
Вопрос:
У меня есть 2 таблицы, таблица A и таблица B.
Таблица A содержит 2 сеанса. столбец «догадки» — это предположения, а столбец «правильная буква в правильном положении» указывает, как подсказывает название, какие буквы в предположениях были в правильном положении. Каждый сеанс имеет 1 правильный ответ,
Table A
Session Guesses Correct_letter_in_correct_position Correct letter_in_wrong_position
1 ABDC 2 2
1 ABCF 3 0
1 BAFD 1 2
2 EFGD 3 0
2 EFHG 2 2
2 EFGI 3 0
Таблица B содержит все возможные ответы, включая правильный ответ и неправильные ответы
Например:
Table B
Possible_answers
ABCD
PQRS
BCDA
RSTU
..
..`etc
`
Мне нужен запрос / логика в SQL, чтобы получить наилучший возможный ответ на основе таблицы A и таблицы B таким образом, запрос выдает вывод, подобный этому, который показывает точные правильные ответы
Session Best_possible_answer
1 ABCD
2 EFGH
или как этот, который показывает все возможные ответы, которые могут быть возможны
Session Best_possible_answer
1 ABCD
1 BACD
1 ..
2 EFGH
2 EFGJ
2 EFGK
ПРИМЕЧАНИЕ: Наилучшие возможные ответы должны быть получены из таблицы B
Комментарии:
1. Я не понимаю, для чего вам нужна таблица B. Похоже, вам просто нужны предположения из таблицы A, которые имеют наилучшее соответствие в сеансе (максимум правильной позиции неправильная позиция, затем максимум правильной позиции в случае ничьей). Я ошибаюсь?
2. И, пожалуйста, сообщите нам, какую СУБД вы используете. Еще лучше было бы знать СУБД и версию 🙂 Вопросы SQL всегда должны быть помечены СУБД, потому что ответы могут сильно различаться в зависимости от этого.
3. Нет, предположения из таблицы A неверны, но дают подсказку о том, насколько близко должны располагаться буквы. Используя это, мне нужно найти наилучшее возможное предположение из таблицы B для отображения в выходных данных
4. postgresql @ThorstenKettner
5. Хорошо. Это очень похоже на игру Master Mind. Я бы не стал решать такую головоломку в SQL. Это может быть решаемо с помощью перекрестного соединения и последующего взвешивания ответов по совпадениям позиций и совпадениям букв каким-либо образом. Не знаю, может быть, нет. Если бы это было так, то SQL мог бы подойти для этого. но необходимый процесс, скорее всего, является итеративным. Итерации в SQL выполняются с помощью рекурсивных запросов, но язык программирования должен быть лучшим инструментом здесь.