#sql #excel #ms-access #vba #jet-sql
#sql #excel #ms-access #vba #jet-sql
Вопрос:
Как следует из названия, я хочу запустить оператор select, чтобы вернуть 1 значение для каждого элемента, с которым выполняется поиск. Я приведу простой пример для этого.
Допустим, что моя таблица выглядит следующим образом:
table1
Mdl Code
Model Model Code
M1070 32HT
M1060 32A4
где table1 — это таблица, Mdl и Code — столбцы, и есть две записи.
Теперь допустим, что у меня есть список, который делает так, чтобы мне нужно было преобразовать коды моделей в модели. В этом списке могут быть коды моделей, найденные в table1, в нем могут быть записи, не найденные в table1, и в нем могут быть записи, которые повторяются при поиске. Мой вопрос в том, как (в обобщенном смысле, поскольку мои данные более сложные) я могу запустить следующий пример поиска:
32HT
32HT
32HM
NULL (blank entry in searching)
В идеале мне бы хотелось, чтобы она возвращала следующее:
M1070
M1070
"" (a null or blank value as a place holder so the lists stay in line)
"" (a null or blank value again)
Важность этого заключается в том, что возвращаемые значения всегда должны что-то возвращать, иначе список, в который он сбрасывается, может сбиться.
Заранее спасибо.
Чтобы прояснить некоторые вещи, список будет сгенерированным списком (то есть не из существующей таблицы). Я также использую JET SQL, чтобы ограничить некоторые доступные функции SQL.
Ответ №1:
SELECT l.Code, COALESCE(t.mdl, '') as mdl
FROM List l
LEFT JOIN table1 t
ON l.Code = t.Code
Комментарии:
1. Это на правильном пути, но список будет введен (сгенерирован). Извините за путаницу
2. @EricF Я бы посоветовал вам сохранить этот введенный список во временной структуре таблицы и использовать указанный запрос.
3. Не могли бы вы привести пример этого? Извините за отсутствие опыта
4. «JET SQL» подразумевает механизм базы данных Access, и в этом случае временные таблицы не являются опцией и
COALESCE()
недоступны (но могут быть переписаны какIIF(t.mdl IS NULL, '', t.mdl)
).5. SQL — это общий тег, jet-sql специфичен.
Ответ №2:
Список поступает из другой таблицы? Если это так, внешнее соединение между двумя таблицами должно сохранять значения null.
SELECT * FROM listtable
LEFT OUTER JOIN table1
Комментарии:
1. Нет, параметры поиска будут введены. Извините за путаницу
2. @EricF Я бы рекомендовал просмотреть эту статью для получения заметок о том, как записывать данные в таблицу, и просто объявить временную таблицу для объединения с существующей таблицей.