2010-10-12 5 views
1

У меня есть таблица SIGNUPS, где я регистрирую все регистрационные записи для определенного события. Теперь я хочу, чтобы все люди, подписавшиеся на мероприятие, добавили дополнительный столбец STATUS, в котором говорится, что пользователь фактически принят (STATUS = «ОК») или если он находится в списке ожидания (STATUS = «WL») , Я пытался что-то вроде этогоSQL: фильтр по дате

SELECT *, IDUSER IN (SELECT IDUSER FROM SIGNUPS ORDER BY DATE ASC LIMIT 10) 
as STATUS from SIGNUPS WHERE IDEVENT = 1 

Это должно вернуть STATUS 1 в течение первых 10 пользователей, которые подписались, и 0 для всех остальных. К несчастью, я получаю ошибку Mysql, сообщающую мне, что LIMIT в подзапросах еще не поддерживается.

Не могли бы вы предложить другой способ получить ту же информацию?

Благодаря

+0

Я думаю, что «INNER JOIN» должен помочь. –

ответ

0

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

select 
    s.*, 
    s.DATE > d.min_date_10 AS STATUS 
from SIGNUPS s 
    join (
     select MIN(DATE) AS min_date_10 from (
      select DATE from SIGNUPS order by DATE asc LIMIT 10 
     ) a 
    ) d 
WHERE IDEVENT = 1