СОЕДИНИТЬ таблицу с подзапросом SELECT с предложением LIMIT 1 и предложением WHERE, совпадающим со значениями столбца вне его - PullRequest
0 голосов
/ 30 октября 2019

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

SELECT

  t1.column1,
  t1.column2,
  t2.column1,
  t3.column2

FROM

  table1 t1

JOIN 
(
    SELECT column1 
    FROM table2 
    WHERE t1.column2 > table2.column1
    ORDER BY table2.date DESC
    LIMIT 1

) t2 

JOIN table3 t3 ON t2.column1=t3.column2

Получение ошибки: неизвестный столбец t1. колонка 2 в «где пункт». Кажется, я не могу обратиться к другим столбцам внутри подзапроса.

Возможно ли то, что я пытаюсь сделать? Если так, что я делаю не так / как еще я могу попробовать это?

Ответы [ 3 ]

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

В MySQL неявные и явные объединения в одном запросе создают проблему. Вы не можете использовать неявный JOIN на основе вложенного SELECT - FROM - WHERE запроса, когда присутствует другой явный JOIN подарок.

Попробуйте ниже.

SELECT *
FROM table1 t1
INNER JOIN  table2 t2 ON t1.column2 > t2.column1
LEFT OUTER JOIN table3 t3 ON t2.column1=t3.column2
0 голосов
/ 30 октября 2019

Решение для меня было:

SELECT

  t1.column1,
  t1.column2,
  t2.column1,
  t3.column2

FROM

  table1 t1

JOIN table2 t2 ON t2.id = 
(
    SELECT id 
    FROM table2 
    WHERE t1.column2 > table2.column1
    ORDER BY table2.date DESC
    LIMIT 1
) 

JOIN table3 t3 ON t2.column1=t3.column2

Подробнее о:

CROSS / OUTER APPLY в MySQL

https://dba.stackexchange.com/a/170760/13156

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

Вы можете переписать ваш запрос как -

SELECT t1.column1,
       t1.column2,
       t2.column1,
       t3.column2
FROM table1 t1
JOIN (SELECT column1 
      FROM table2
      ORDER BY table2.date DESC
      LIMIT 1) t2 ON t1.column2 > t2.column1
JOIN table3 t3 ON t2.column1=t3.column2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...