2017-08-08 12 views
0

私は2つのテーブル:stops_jenaに停止があります(すべての停止は1回のみ表示されます)。trips_cleanには同じ停止が何度もあります。 vehicleという3つの異なる値を持つ列もあります。 すべての駅で、この停車場の車両が「バス」の場合は、trueという列が必要です。Postgresql: "CASE"は別のテーブルに基づいています

picture of stops_jena

WITH trips_stops_bus as (
    SELECT DISTINCT stop_name as stop 
    FROM hafas.trips_clean 
    WHERE hafas.trips_clean.vehicle = 'bus' 
) 

SELECT 
    DISTINCT stops_jena.stop_name, 
    case when stops_jena.stop_name = trips_stops_bus.stop then 'true' else 'false' end as bus 
FROM hafas.stops_jena, trips_stops_bus 
ORDER BY stops_jena.stop_name 

これが私のクエリですが、ストップ2回のコラムバスがlook here

+0

今日のヒント:現代的で明示的な 'JOIN'構文に切り替えます。 (エラーなしで)書きやすく、読みやすく(維持しやすい)、必要に応じて外部結合に変換する方が簡単です。あなたのコメントのために – jarlh

+0

ありがとう。あなたは私にそれの例を教えてくれますか? – gemo1011

答えて

0

真でいます私はIN-conditonを使用するので、停止は一度だけ表示されます。

WITH trips_stops_bus as (
SELECT DISTINCT stop_name as stop 
FROM hafas.trips_clean 
WHERE hafas.trips_clean.vehicle = 'bus' 
    ) 

SELECT 
    DISTINCT stops_jena.stop_name, 
    case when stops_jena.stop_name IN (SELECT stop from trips_stops_bus) then 'true' else 'false' end as bus 'false' end as bus 
FROM hafas.stops_jena, trips_stops_bus 
ORDER BY stops_jena.stop_name 
関連する問題