Вы можете заставить подзапрос возвращать только один reocrd с вершиной 1
Так вот:
DLookUp("[price]","tbl_so_manifest","[so_id] = "
& tbl_trade.so_id & " AND [product_id] = " & tbl_po_manifest.product_id)
Становится:
(SELECT TOP 1 Price FROM tbl_so_manifest
WHERE so_ID = tbl_trade.so_id AND product_id = sm.product_id
ORDER BY PRICE, ID DESC) AS MyPrice
Так что вы на самом делене нужно объединение, а просто "выдерни" значение. Чтобы ограничить подзапрос ОДНОЙ записью, ТОП 1 и порядок по "PK" обеспечат возвращение только одной строки. Если вы пропустите «id», то, если две верхние цены будут одинаковыми, вы получите две строки. Добавив «ID» к заказу, вы получите только одну строку, даже если 5 цен одинаковы.
Если другие таблицы в контексте имеют одинаковое имя столбца, то, конечно, добавьте таблицуквалификатор к вышеупомянутому (но он записал это как положено для короткой руки).
Таким образом, как правило, вы можете заменить dlookup () запросом вышеупомянутого типа. Я не очень хорошо знаком с MySQL, поэтому вы не сможете использовать псевдоним таблицы, как указано выше, но в целом используйте топ 1 и порядок с "ID (или PK), добавленным после цены или что-то еще в этих случаях. где может существовать более одной строки. В большинстве случаев у dlookup () не должно быть нескольких значений (но dlookup () всегда возвращает только одно значение). Так что в большинстве случаев «переводит» из dlookup () в подзапрос,top 1 не должен быть обязательным.
И я не могу думать, что dlookup () нуждается в "join". Dlookup () всегда попадает в одну таблицу, как и при преобразовании dlookup () в subзапрос. Вы хотите, чтобы столбец собирал, таблицу, а затем критерии).
Если dlookup () является значением FK, то левое соединение с таблицей поиска легче, и не приведет к появлению лишних строк взапрос, но любой подход в порядке. Я обнаружил, что у подзапроса меньше шансов "связываться" с основным числом запросов, возвращаемых строк.
Итак, dlookup () для подзапроса являетсяпреобразование один в один. Соединение не требуетсяed, и, как отмечалось в большинстве случаев, TOP + + добавленный id / pk не требуется в большинстве случаев.