MySQL Подсчет из таблицы, где условие в последней строке связанной таблицы - PullRequest
1 голос
/ 30 апреля 2020

Я новичок с MySQL и действительно имею проблему. (... и мой Engli sh оставляет желать лучшего ...: D)

База данных (извлечение) У меня есть 3 таблицы: Пакет , MainPost и MainPostHistory . A Пакет имеет от 1 до x MainPost , а MainPost имеет от 1 до x MainPostHistory (вид журнала). Каждая таблица имеет первичный ключ с автоинкрементом. Кроме того, MainPostHistory определяется DateTime и MainPostStatusID . Конечно, все таблицы связаны индексами внешнего ключа.

Что мне нужно сделать Я должен посчитать (для каждой Batch ) число MainPost с последним MainPostHistory с MainPostStatusID равно (для примера) 0. Итак, у меня есть 2 параметра: BatchID и MainPostStatusID для проверки.

Что я сделал Я написал следующий запрос, но получаю ошибку " Неизвестный столбец MP.ID":

SELECT COUNT(*)
FROM MainPost AS MP
WHERE (MP.BatchID = @BatchID) AND (((
    SELECT qMPH.MainPostStatusID
    FROM (
        SELECT MPH.MainPostStatusID
        FROM MainPostHistory AS MPH
        WHERE MPH.MainPostID = MP.ID
        ORDER BY MPH.DateTime DESC
        LIMIT 1
        ) AS qMPH
    )) = @SearchedMainPostStatusID);

Что я ожидаю Почему эта ошибка и как ее решить? И, кстати, это лучший способ сделать это? Пожалуйста! И спасибо за чтение! : -)

1 Ответ

0 голосов
/ 30 апреля 2020

Вам не нужно вкладывать вложенный запрос в другой, где MP.ID находится вне области действия:

SELECT COUNT(*)
FROM MainPost AS MP
WHERE (MP.BatchID = @BatchID) AND (
        SELECT MPH.MainPostStatusID
        FROM MainPostHistory AS MPH
        WHERE MPH.MainPostID = MP.ID
        ORDER BY MPH.DateTime DESC
        LIMIT 1
        ) = @SearchedMainPostStatusID;
...