Создание MySQL-запроса из запроса доступа - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь преобразовать запрос Access в MySQL.Я вполне приличен с MySQL, но я не уверен, как это включить.Я думаю, что второй запрос из Access должен стать подзапросом для MySQL в первом запросе, я просто не знаю, где его разместить.Этот запрос будет запущен как событие на сервере MySQL.

Запрос доступа запускается как два, первый, который определяет идентификатор транзакции определяющей транзакции.Я уже преобразовал в MySQL и работает правильно:

SELECT DISTINCT t.patient_id, MAX(t.id) AS MaxOfid
FROM transactions AS t
INNER JOIN disposition_transaction_type AS dt
    ON t.disposition_transaction_type_id = dt.id
INNER JOIN dispositions AS d
    ON dt.disposition_id = d.id 
WHERE (d.member_status = "Unenrolled" AND (t.created_at BETWEEN '2019-05-01' AND '2019-05-31')) OR ((t.created_at BETWEEN '2019-05-01' AND '2019-05-31') AND (t.disposition_transaction_type_id = 24))
GROUP BY t.patient_id;

, который производит правильный возврат

+------------+---------+
| patient_id | MaxOfid |
+------------+---------+
|         10 |       8 |
+------------+---------+
|        112 |    4321 |
+------------+---------+

2-й запрос, который определяет определяющее расположение и статус для пациента:

SELECT qryAgreedToServiceOrUnenrolled.patient_id, dispositions.description, dispositions.member_status
FROM ((qryAgreedToServiceOrUnenrolled 
INNER JOIN transactions ON qryAgreedToServiceOrUnenrolled.MaxOfid = transactions.id) 
INNER JOIN disposition_transaction_type ON transactions.disposition_transaction_type_id = disposition_transaction_type.id) 
INNER JOIN dispositions ON disposition_transaction_type.disposition_id = dispositions.id;

1 Ответ

1 голос
/ 02 июня 2019

Предполагается, что первый запрос для запуска называется qryAgreedToServiceOrUnenrolled.Попробуйте вложить первый SQL во второе предложение FROM.Может заменить qryAgreedToServiceOrUnenrolled другим псевдонимом везде, на который он ссылается.

SELECT qryAgreedToServiceOrUnenrolled.patient_id, dispositions.description, dispositions.member_status
FROM ((

    (SELECT DISTINCT t.patient_id, MAX(t.id) AS MaxOfid
    FROM transactions AS t
    INNER JOIN disposition_transaction_type AS dt
        ON t.disposition_transaction_type_id = dt.id
    INNER JOIN dispositions AS d
        ON dt.disposition_id = d.id 
    WHERE (d.member_status = "Unenrolled" AND (t.created_at BETWEEN '2019-05-01' AND '2019-05-31')) OR ((t.created_at BETWEEN '2019-05-01' AND '2019-05-31') AND (t.disposition_transaction_type_id = 24))
    GROUP BY t.patient_id) AS qryAgreedToServiceOrUnenrolled 

INNER JOIN transactions ON qryAgreedToServiceOrUnenrolled.MaxOfid = transactions.id) 
INNER JOIN disposition_transaction_type ON transactions.disposition_transaction_type_id = disposition_transaction_type.id) 
INNER JOIN dispositions ON disposition_transaction_type.disposition_id = dispositions.id;

Я согласен, что DISTINCT, вероятно, не нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...