MySQL псевдоним не работает при присоединении - PullRequest
0 голосов
/ 14 июля 2020

У меня есть две основные таблицы: заказы и транзакции PayPal. Я пытаюсь получить только отдельные значения из моей таблицы транзакций PayPal. Поскольку в моей таблице транзакций нет уникального идентификатора, я попытался использовать подзапрос для их получения.

Проблема с моим запросом в том, что MySQL не распознает мои псевдонимы. Следовательно, это дает мне ошибку неизвестного столбца. / * SQL Ошибка (1054): Неизвестный столбец 'pp.Date' в 'списке полей' * /

SELECT

pp.Date

FROM hub.orders o 

LEFT JOIN
    (SELECT p.transaction_of_interest AS ppID       
        FROM financial.paypal AS p
        GROUP BY p.transaction_of_interest
    ) AS pp ON pp.ppID = o.ex_trans_id

Ответы [ 3 ]

0 голосов
/ 14 июля 2020

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

Вам необходимо добавить поле ¬Date¬ в список выбора в подзапросе и в предложение group by как хорошо.

SELECT

pp.Date

FROM hub.orders o 

LEFT JOIN
    (SELECT p.transaction_of_interest AS ppID, p.Date       
        FROM financial.paypal AS p
        GROUP BY p.transaction_of_interest, p.Date
    ) AS pp ON pp.ppID = o.ex_trans_id
0 голосов
/ 14 июля 2020

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

Если вам нужны только даты из таблицы paypal, разве это не то, что вы хотите?

SELECT DISTINCT p.DATE     
FROM financial.paypal p;

Если даты взяты из таблицы заказов, но вы хотите их только для транзакций PayPal, то LEFT JOIN не подходит:

SELECT DISTINCT o.Date
FROM hub.orders o JOIN
     financial.paypal p
     ON pp.ppID = o.ex_trans_id
0 голосов
/ 14 июля 2020

Вы не получаете столбец DATE из подзапроса PP. Если вы включите этот столбец, он будет работать так, как вы ожидаете. Если ваш результирующий набор умножается из-за TRANSACTION_OF_INTEREST значений не различны, вы должны использовать функцию на P.DATE как MAX для сингулярности yor TRANSACTION_OF_INTEREST значений.

Какие PP.DATE значения вам нужны ? Есть ли какое-нибудь условие вроде последнего свидания или чего-то в этом роде?

SELECT PP.DATE
  FROM HUB.ORDERS O
       LEFT JOIN (SELECT P.TRANSACTION_OF_INTEREST AS PPID,P.DATE
                    FROM FINANCIAL.PAYPAL AS P
        GROUP BY P.TRANSACTION_OF_INTEREST,P.DATE
    ) AS PP ON PP.PPID = O.EX_TRANS_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...