2014-11-13 2 views
1

2,0 - открытый, 2,1 - В ожидании, 2,2 - закрытаякак применять условие подсчета в MySQL Query

Нужна предложение, чтобы выяснить, все билеты, которые открыты еще раз после того, как когда-то закрыто (2,2)

id c_id type value created_at 

1 201 2  0  
2 201 2  1 
3 201 2  2 
4 201 2  0 
5 201 2  2 
6 201 2  0 
7 201 2  1 
8 201 2  2 
+1

Как мы определяем, что 'open' является« после »закрытия? Чем выше значение столбца 'id'? (Обычно мы используем значение в столбце datetime или timestamp, чтобы указать, является ли одно событие «после» другим событием.) – spencer7593

+0

Да. У нас есть id и created_at в таблице. Я попытался выбрать * из таблицы, где c_id = 201 и id IN (выберите min (id) из таблицы, где c_id = 201 и type = 2 и value = 2) и условие Open/Pending – jacob53

ответ

0

Попробуйте это:

SELECT * 
FROM mytable 
WHERE id IN(
    SELECT id 
    FROM mytable 
    WHERE type = 2 
    AND value = 2 
    ) 
AND type != 2 
AND value != 2 
0

c_id Если предположить, что это идентификатор билета, и предполагая, что id столбец используется для определения того, что одно событие является «после того, как» другое события ...

SELECT o.c_id 
    FROM mytable o  -- open events 
    JOIN mytable c  -- close events 
    ON c.c_id = o.c_id -- match same ticket 
    AND c.type = 2 
    AND c.value = 2  -- close event 
    AND c.id < o.id  -- close event is before open 
WHERE o.type = 2 
    AND o.value = 0  -- open event 
GROUP BY o.c_id  -- distinct list of ticket 
Смежные вопросы