2013-07-09 3 views
0

У меня есть таблица, которая содержит информацию о событиях для пользователей, то есть каждая строка содержит идентификатор, дату начала пользователя, дату завершения и номер события. Пример:MySQL Intersect Query на одной таблице

Ряд 1: ID 256 | StartDate 13360500 | FinishDate 13390500 | EventNum 3

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

SELECT table_id FROM table 
    WHERE table_EventNum = 3 
    AND table_FinishDate > 0 

    AND table_id IN (SELECT table_id FROM table WHERE table_EventNum = 2); 

Этот запрос без подзапрос (строка, отделенная от остальных внизу) возвращает кучу ненулевых результатов, как и следовало ожидать, и подзапрос также возвращает кучу ненулевых результатов (опять же, как и должно). Но по какой-то причине составной запрос не возвращает никаких строк вообще. Я знаю, что команда IN возвращает NULL, если выражение с обеих сторон равно NULL, но поскольку оба запроса возвращают результаты, я не уверен, что еще может вызвать это.

Любые идеи? Благодаря!

ответ

1

Предполагая, что FinishDate имеет значение NULL, когда событие не завершено. Кроме того, если предположить, что там должен быть строкой с соответствующим идентификатором и номером события 2 и этим событием-не может произойти до события 2:

SELECT t1.table_id FROM table t1 INNER JOIN table t2 ON t1.table_id = t2.table_id 
    WHERE t1.table_EventNum = 3 AND t2.table_EventNum = 2 
    AND NOT t1.table_FinishDate IS NULL 

Следует заметить, что я не мог найти ничего плохого с вашим запросом, кроме того факта, что вы не требуется подзапрос.

+0

Имеет ли значение, что я только выбираю table_id вместо FinishDate и table_id? Я думал, что MySQL сначала выполнит действие SELECT, а затем выполнит команду IN (ID)? – mgh14

+0

SELECT table_id, FinishDate FROM table WHERE table_EventNum = 3 AND table_FinishDate> 0 AND table_id IN (SELECT table_id FROM table WHERE table_EventNum = 2); - должно быть хорошо, никакой разницы – Tarik

Смежные вопросы