sqlite: запрос дополнительных столбцов с помощью составного выбора - PullRequest
1 голос
/ 04 февраля 2011

У меня есть таблица, содержащая следующие столбцы:

| name | city | time | version |

Я использую этот запрос, чтобы найти все строки с новыми адресами между двумя версиями:

select name, city from adresses where version = 2 
except 
select name, city from adresses where version = 1

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

Я хотел бы что-то вроде этого:

NOT WORKING
select time from adresses where version = 2 and 
(select name, city from adresses where version = 1 
except select name, city from adresses where version = 2);

Кто-то знает, как я могу это сделать?

Спасибо

1 Ответ

2 голосов
/ 05 февраля 2011

Не уверен, что я правильно понимаю ваш вопрос, но, исходя из написанного вами запроса, я думаю, что это то, что вы на самом деле хотели:

SELECT time FROM adresses a
INNER JOIN (
   select name, city from adresses where version = 1 
   except 
   select name, city from adresses where version = 2
) new ON new.name = a.name AND new.city = a.city
WHERE version = 2

Если вы ищете разницу во времени между двумя версиями записи (о чем вы также упоминаете в своем вопросе), вы можете сделать что-то вроде этого:

SELECT a2.*, a2.time - a1.time as time_diff
FROM adresses a1
INNER JOIN adresses a2 ON a1.name = a2.name AND a1.city = a2.city
WHERE a1.version = 1 AND a2.version = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...