나는 PVR 앱의 일부인 SQLite DB를 가지고 있습니다. 테이블 중 하나 (epg_event)는 TV 프로그램의 모든 데이터를 보유합니다.동일한 테이블에서 두 개의 결과 세트가있는 JOIN?
Now와 Next 모두에 대한 단일 레코드에서 Now/Next 쇼를 반환하는 쿼리를 작성하려고합니다.
둘 다 쉽게 개별적으로 쿼리 할 수 있습니다.
이 같은 자신의 모습에 이제 쿼리
...SELECT now.channel_oid as _id,
now.oid as now_oid,
now.title as now_title,
now.start_time as now_start_time,
now.end_time as now_end_time
FROM epg_event now
WHERE now.start_time <= datetime('now') AND now.end_time > datetime('now')
ORDER BY now.channel_oid
이 잘 작동하고 테스트에서 내가 필요한 것을 얻을. 예 ...
_id now_oid now_title now_start_time now_end_time
10029 16365522 BBC News 2014-05-21 00:45:00 2014-05-21 05:00:00
10030 16365900 Making Art 2014-05-21 03:00:00 2014-05-21 04:00:00
...
이 같은 자신의 외모에 다음 쿼리 ...
SELECT next.channel_oid as _id,
next.oid as next_oid,
next.title as next_title,
MIN(next.start_time) as next_start_time,
next.end_time as next_end_time
FROM epg_event next
WHERE next.start_time > datetime('now')
GROUP BY next.channel_oid
이 또한 다음 TV 프로그램에 대한 올바른 결과를 반환합니다.
내가 겪고있는 문제는 두 개의 쿼리를 결합하여 지금과 다음 데이터가있는 각 채널에 대한 단일 레코드를 반환하려고하지만이를 수행하는 방법을 찾지 못한다는 것입니다. 내가 일종의 조인을 사용해야하지만 내 SQLite 도구를 시도 할 때마다 오류가 발생하는 것으로 생각하고 있습니다.
이상적으로 난 할 노력하고있어 그래서 ...
_id now_oid now_title now_start_time now_end_time next_oid next_title next_start_time next_end_time
이 가능 다음과 같은 열이인가 한 각 행에 하나의 _id 컬럼을 얻고 행에 현재/다음 열을 결합입니다 동일한 테이블의 두 개의 쿼리에서 JOIN을 사용하거나 다른 것을 사용해야합니까?
왜 row_over 쿼리를 사용하지 않습니까? 그들은 이런 식으로 설계되었습니다. 파티션 및 다음 행으로 검색하십시오. 인터넷에는 코드 예제가 많이 있습니다. –
@AnthonyHorne : 알았습니다. 한번보세요. SQL은 내 장점이 아니며 기본 쿼리 이외에는 항상 두통이 듭니다. – Squonk
다음은 좋은 예입니다. http://www.kodyaz.com/articles/sql-select-previous-and-next-rows-with-current-row-in-tsql.aspx –