У меня есть две таблицы, настроенные вроде так:SQL - JOIN, если конкретный столбец содержит данные сопоставления двух других
table1
id | firstName | lastName
-----|------------|-----------
01 | john | smith
02 | dick | johnson
03 | sam | adams
04 | tiberius | kirk
table2
fullName | status
--------------------|---------
john smith | active
dick arnold johnson | active
samuel adams | disabled
jim tiberius | active
Мне нужно получить столбец состояния из table2 в table1. Проблема в том, что имена в обеих таблицах не соответствуют точно (как я уже показал). Я хотел бы сохранить все записи в таблице1, даже если они не могут соответствовать их записи в таблице2. В конце концов, я хочу, чтобы мой выход будет что-то вроде этого:
id | firstName | lastName | fullName | status
-----|------------|-----------|---------------------|--------
01 | john | smith | john smith | active
02 | dick | johnson | dick arnold johnson | active
03 | sam | adams | samuel adams | disabled
04 | tiberius | kirk | NULL | NULL
Я пытался выяснить, как сделать это с LEFT JOIN, но я очень новичок в SQL и были проблемы, выясняя 1), к чему их присоединяться, если нет общего столбца между таблицами 1 и 2 и 2), как я могу заставить его найти полное имя и lastName в fullName и присоединяться только к записям, когда они совпадают?
Какой SQL? – Blindy
Вы уверены, что нет другого способа получить истинное соответствие идентичности между таблицами 1 и 2? Если нет, вам может потребоваться использовать некоторую нечеткую логику (возможно, SOUNDEX), чтобы вывести отношения, но вам не гарантируется, что матч будет на 100% точным. –
@ Блинди, я использую внутренне разработанную инструмент, который использует SQL для запуска запросов, поэтому я не думаю, что он квалифицируется как любой из распространенных типов. Однако мое понимание этого может быть абсолютно неправильным. –