Задать вопрос
@ivazin

MySQL JOIN с выбором N-ой строки присоединяемой таблицы?

У меня есть две таблицы:
1) users (id, ...)
2) orders (id, user_id, date, ...)

Мне надо первую таблицу дополнить столбцом с датой второго заказа или NULL. Это возможно на MySQL?
  • Вопрос задан
  • 2286 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Задачка, конечно, не для MySQL, но решение есть:
SELECT u.*, t2.date FROM users u LEFT JOIN (
    SELECT @rn := IF(t1.prevdate IS NULL, 1, @rn + 1) rn, t1.id, t1.user_id, t1.date FROM (
        SELECT o.id, o.user_id, o.date, o2.date prevdate
        FROM orders o 
            LEFT JOIN orders o2 ON o2.user_id = o.user_id AND o2.date < o.date
            LEFT JOIN orders o3 ON o3.user_id = o.user_id AND o3.date > o2.date AND o3.date < o.date
        WHERE o3.id IS NULL ORDER BY o.user_id, o.date
    ) t1, (SELECT @rn := 0) sg
) t2 ON t2.user_id = u.id AND t2.rn = 2
Ответ написан
Комментировать
@pihel
Sql, Oracle, pl/sql, BI, ETL, php, olap
Може так
SELECT u.*,
(
  SELECT MAX(o1.date) 
  FROM orders o
  INNER JOIN orders o1
   ON(o1.user_id = o.user_id
       AND o1.date < o.date)
  WHERE 
    o.user_id = u.id
) as date
FROM users u
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы