2016-12-09 2 views
0

Как мне присоединиться к следующим таблицам с помощью подстановочных знаков? Я хотел бы получить все отдельные строки из таблицы People, которая содержит SearchedName из таблицы SearchedPeople.SQL join tables with wildcard (MS Access)

SearchedPeople:

SearchedName    
-------- 
Andrew 
John 
John Smith 

Люди:

ID PersonName  Attribute  Age 
---------------------------------------- 
1 John Smith   1   23 
2 John Smith Jr  3   25 
3 John Smith Jr II 4   73 
4 Kevin    2   21 
5 Andrew Smith  1   14 
6 Marco    5   90 

Желаемая Выход:

PersonName  Attribute  Age 
---------------------------------------- 
John Smith   1   23 
John Smith Jr  3   25 
John Smith Jr II 4   73 
Andrew Smith  1   14 

код я получил до сих пор, который оленья кожа УНР. Он возвращает три пустые строки (почему?).

SELECT b.PersonName, b.Attribute, b.Age 
FROM SearchedPeople a 
LEFT JOIN People b ON "%"&a.SearchedName&"%" like b.PersonName 

ответ

4

Он возвращает три пустые строки, потому что у вас нет каких-либо столбцов из таблицы а (SearchedPeople) и LEFT JOIN не производят матч.

Причина: Ваш вопрос в том, что вы ищете PersonName в строке %Searchedname%, вам нужно переключить его. Также Access не нравится % столько, сколько ему нравится asteriks * для wilcard, если вы не внесете некоторые изменения в запрос или конфигурацию MS-Access, см. Ниже комментарий от Parafait.

Я просто проверил это:

SELECT a.SearchedName 
     ,b.PersonName, b.Attribute, b.Age 
FROM 
     SearchedPeople a 
     LEFT JOIN People b 
     ON b.PersonName LIKE ("*" & a.SearchedName & "*") 

Edit:

Хороший Ms Access конкретную информацию из комментария от @Parafait вставки в ответ на случай, если комментарий каждый получил удален .:

Использование Alike и проценты работают. И если OP подключается к MS Access через OLEDB, а не к программе GUI .exe, оператор% необходим для операторов LIKE в кодированном SQL. OP также может изменять настройки базы данных в режиме ANSI-92, чтобы всегда использовать групповые маски%.

+1

Используйте 'ALIKE' и проценты. И если OP соединяется с MS Access с помощью OLEDB, а не с программой GUI .exe, '' '' '' оператора требуется для операторов 'LIKE' в кодированном SQL. OP также может изменять настройки базы данных в [режим ANSI-92] (https://support.office.com/en-us/article/Comparison-of-Microsoft-Access-SQL-and-ANSI-SQL-93edf744-9070- 4af8-bcf9-1953a87bd6e5), чтобы всегда использовать подстановочные знаки '%'. – Parfait

+0

@Parfait thanks Я смотрел документацию по ms-access на подстановочных знаках и видел '%' список в стандарте 92 и '*' в 89, но я просто пошел с тем, что увидел, что работает isntead глубокого погружения, чтобы посмотреть, почему Access не признает '%' в любом случае спасибо за информацию, я надеюсь, что вы с ней хорошо, я просто вставлял ваш комментарий непосредственно в ответ, чтобы убедиться, что он остается доступным. Не стесняйтесь редактировать и т. Д., Если вы хотите что-то изменить. – Matt