0

私はおそらく週末にこれを理解するでしょう.金曜日の遅くに集中するのは難しいです...

以下のクエリ 1 は、特定の場所での到着と出発の値を含む旅行を返します。

以下のクエリ 2 は、2 番目の場所での到着と出発の値を含む旅行を返します。

これら 2 つのクエリは簡単です。

クエリ 2 の出発時刻がクエリ 1 の到着時刻と出発時刻の間にある場合、クエリ 2 の結果のみを返したいと考えています。

要するに、これにより、すでに「BER3」にある旅行が出発する前に、「BER2」を出発する旅行のインスタンスが得られます。

クエリ 1

SELECT     RTDEV.TRIP_HEADERS.TRIP_NAME, RTDEV.TRIP_BODIES.ARRIVAL_TIME, RTDEV.TRIP_BODIES.DEPARTURE_TIME
FROM         RTDEV.TRIP_HEADERS INNER JOIN
                      RTDEV.TRIP_BODIES ON RTDEV.TRIP_HEADERS.TME_ID = RTDEV.TRIP_BODIES.TME_ID AND 
                      RTDEV.TRIP_HEADERS.THR_ID = RTDEV.TRIP_BODIES.THR_ID INNER JOIN
                      RTDEV.TNODED ON RTDEV.TNODED.NID = RTDEV.TRIP_BODIES.CURRENT_NODE
WHERE     (RTDEV.TNODED.STRSHORTNAME = 'BER3') AND (RTDEV.TRIP_BODIES.TME_ID = 9860)

クエリ 2

SELECT     TRIP_HEADERS_1.TRIP_NAME, TRIP_BODIES_1.ARRIVAL_TIME, TRIP_BODIES_1.DEPARTURE_TIME
FROM         RTDEV.TRIP_HEADERS TRIP_HEADERS_1 INNER JOIN
                      RTDEV.TRIP_BODIES TRIP_BODIES_1 ON TRIP_HEADERS_1.TME_ID = TRIP_BODIES_1.TME_ID AND 
                      TRIP_HEADERS_1.THR_ID = TRIP_BODIES_1.THR_ID INNER JOIN
                      RTDEV.TNODED TNODED_1 ON TNODED_1.NID = TRIP_BODIES_1.CURRENT_NODE
WHERE     (TNODED_1.STRSHORTNAME = 'BER2') AND (TRIP_BODIES_1.TME_ID = 9860)

助言がありますか?

4

1 に答える 1

0

簡単です。次のquery2ように、インライン ビュー (FROM句内のビュー) 内に配置できます。

SELECT     TRIP_HEADERS_1.TRIP_NAME, TRIP_BODIES_1.ARRIVAL_TIME, TRIP_BODIES_1.DEPARTURE_TIME
FROM         RTDEV.TRIP_HEADERS TRIP_HEADERS_1 INNER JOIN
                      RTDEV.TRIP_BODIES TRIP_BODIES_1 ON TRIP_HEADERS_1.TME_ID = TRIP_BODIES_1.TME_ID AND 
                      TRIP_HEADERS_1.THR_ID = TRIP_BODIES_1.THR_ID INNER JOIN
                      RTDEV.TNODED TNODED_1 ON TNODED_1.NID = TRIP_BODIES_1.CURRENT_NODE
-- PUT YOUR QUERY 2 HERE --
JOIN (SELECT     RTDEV.TRIP_HEADERS.TRIP_NAME, RTDEV.TRIP_BODIES.ARRIVAL_TIME, RTDEV.TRIP_BODIES.DEPARTURE_TIME
        FROM         RTDEV.TRIP_HEADERS INNER JOIN
                              RTDEV.TRIP_BODIES ON RTDEV.TRIP_HEADERS.TME_ID = RTDEV.TRIP_BODIES.TME_ID AND 
                              RTDEV.TRIP_HEADERS.THR_ID = RTDEV.TRIP_BODIES.THR_ID INNER JOIN
                              RTDEV.TNODED ON RTDEV.TNODED.NID = RTDEV.TRIP_BODIES.CURRENT_NODE
        WHERE     (RTDEV.TNODED.STRSHORTNAME = 'BER3') AND (RTDEV.TRIP_BODIES.TME_ID = 9860)) query2
-- AND PUT A JOIN CONDITION --
        ON TRIP_BODIES_1.DEPARTURE_TIME BETWEEN query2.ARRIVAL_TIME AND query2.DEPARTURE_TIME
WHERE     (TNODED_1.STRSHORTNAME = 'BER2') AND (TRIP_BODIES_1.TME_ID = 9860)
于 2013-08-16T05:12:13.347 に答える