MS Access DLookUp запрос к MySql - PullRequest
       15

MS Access DLookUp запрос к MySql

0 голосов
/ 11 октября 2019

Я работаю над преобразованием устаревшей системы доступа MS в приложение с начальной загрузкой, и я натолкнулся на большой запрос. Я в основном закончил с преобразованием функций из доступа к mysql, но не в состоянии понять, как преобразовать следующий подзапрос DLookUp как подзапрос mySql

DLookUp("[price]","tbl_so","[so_id] = " & tbl_trade.so_id & " AND [product_id] = " & tbl_po.product_id

То, что я понял, следующее не будет работать, как яВнутренние объединения не установлены между 3 таблицами: tbl_so, tbl_po, tbl_trade

SELECT tbl_so.price FROM tbl_so WHERE tbl_so.so_id = tbl_trade.so_id AND tbl_so.product_id = tbl_po.product_id

Мой вопрос заключается в том, как узнать, как таблицы будут соединяться друг с другом в этомслучай, а также когда этот запрос DLookUp используется редко. А также решение для этого запроса.

1 Ответ

1 голос
/ 11 октября 2019

Ну, как правило, dlookup () можно заменить левым соединением. Тем не менее, вы также можете использовать подзапрос, и они имеют тенденцию быть «менее» измененными в запросе.

Итак, если бы у нас было это:

SELECT id, partNum, dlookup("PartDescrt","tblParts","PartID  = " & partNum) 
as Description from tblOrders.

Вы бы заменили вышеприведенноеdlookup () с подзапросом вроде этого:

SELECT id, partNum, 
  (select PartDescrt from tblParts where tblParts.PartID = tblOrders.PartNum)
  AS Description
 from tblOrders

Выше приведен синтаксис SQL или access sql, но вполне уверен, что то же самое должно работать для MySQL.

Если есть больше, тоодин partNumber, который соответствует приведенному выше, затем добавьте TOP 1 и порядок с какой-то уникальной строкой (лучше всего подходит столбец PK ID). Таким образом, запрос становится:

  (select TOP 1 PartDescrt from tblParts where tblParts.PartID = tblOrders.PartNum 
     ORDER BY PartDescrt, ID DESC)
  AS Description
...