2013-08-21 1 views
0

В MySQL У меня есть этот запросКак получить доступ к значениям внешнего столбца в подзапросе mysql?

SELECT m.* 
FROM members m 
RIGHT JOIN (SELECT 
       IF(`from member_id`=1, `to member_id`, `from member_id`) as other_id, text, `date sent` 
      FROM message 
      WHERE ((`from member_id`=1 AND `to member_id`=m.id) OR (`to member_id`=1 OR `from member_id`=m.id)) 
      ORDER BY `date sent` DESC 
      LIMIT 1 
      ) as t on 1=1 
ORDER BY t.`date sent` DESC 

, и я получаю эту ошибку:

Unknown column 'm.id' in 'where clause' 

Как я могу передать Члены значения столбца в суб запроса выберите заявление?

Я создаю этот вспомогательный запрос, поэтому он оценивает 1 строку, затем я хочу привязать ее справа от внешнего оператора select.

Спасибо.

+3

Чья блестящая идея заключалась в том, чтобы помещать пробелы в имена столбцов? – Bohemian

+0

Что это за беспорядок, который должен делать запрос? он, вероятно, может быть упрощен. –

+0

Я понял, как это сделать, видимо, что я хотел, известен как «групповой максимум». Хорошим примером этого является http://stackoverflow.com/questions/15211479/groupwise-maximum. – omega

ответ

0

SELECTfrom member_id/to member_id значения в подзапросе. Затем вы можете присоединиться к таблице m в производной таблице, где у вас будет доступ к значениям.

) as t on t.`from member_id` = 1 AND t.`to member_id` = m.id 
OR t.`to member_id` = 1 OR t.`from member_id` = m.id