Вы не сможете запросить эти данные простым запросом.
Во-первых, вам необходимо будет нормализовать данные в D4. Поскольку это Access, вы можете использовать цикл VBA для разделения значений на другую таблицу.
Вы можете сделать что-то вроде этого: создать новую таблицу «Таблица2» с целым столбцом ID
(который не автоинкремент) и текстовый столбец DC4
. Затем заполнить Table2 так:
Public Sub SplitValues()
Dim sourceSet As Recordset
Dim destinationSet As Recordset
Dim iterator As Integer
Dim sourceID As Integer
Dim stringArray() As String
Set sourceSet = CurrentDb.OpenRecordset("Select ID, DC4 From Table1")
CurrentDb.Execute ("Delete From Table2")
Set destinationSet = CurrentDb.OpenRecordset("Table2")
While sourceSet.EOF = False
sourceID = sourceSet("Id")
stringArray = Split(sourceSet("DC4").Value, " ")
For iterator = 0 To UBound(stringArray)
With destinationSet
.AddNew
!ID = sourceID
!DC4 = stringArray(iterator)
.Update
End With
Next
sourceSet.MoveNext
Wend
End Sub
Затем вы можете сделать запрос между исходной таблицей (давайте назовем его «Table1») и новая таблица («Table2»). Запрос будет что-то вроде этого:
Select Table1.ID, Table1.DC1, Table1.DC4
From Table1
Inner Join Table2
On Table1.DC1 Like '*' & Table2.DC4 & '*'
And Table1.ID = Table2.ID
Если DC4 имеет несколько значений, которые повторяются, вы можете использовать Select Distinct
.
Является ли пространство разделителем для каждого слова? Ожидается ли максимальное количество пробелов? – Mike
это может быть что угодно. например, запись 1 может быть 1 | BlaCk (aRRow) | синяя коробка | коричневый сахар | черная корона, и мне все равно понадобится, чтобы показать мои результаты. – Themis