0

多くのテーブルで 1 つのデータベースから多くのフィールドを収集しています (6)。1 つの列が一部のデータの重複を引き起こしています。1 つ以上のパラメーターが true であり、残りのフィールドでグループ化されている場合、そのフィールドのブール値を作成したいと考えています。

ジオメトリ テーブルと住所テーブルの間には 1 対多の関係があります (すべての道路に対して 2 つの側面)。したがって、問題は、道路の両側に 1 つの値が存在するため、複数のリターンが返されることです。bool_or、case、coalesce、exists、array_agg をいじってみましたが、わかりません。何か案は?

select g.country, g.id, n.name, gsc.geometry, gst.class, gst.length, gst.road_type,     gst.one_way, gst.bridge, ga.add_type
from geo g
left outer join name n on (g.id = n.id)
left outer join geometry_address ga on (g.id = ga.id)
join geometry_s gst on (g.is = gst.is)
join geometry_s gs on (g.id = gs.id)
join geometry_sc gsc on (gs.gsi = gsc.gsi)
where (g.type = 'road') and (g.country = 'USA')

ご協力いただきありがとうございます。

4

1 に答える 1

0

まず、何をしているのか、どのフィールドが問題なのかを提供する必要があります。ただし、基本的には、次のものが使用されます。

      SELECT t1.fld1, t1.fld2, bool_or(t2.fld1)
        FROM mytable t1
   LEFT JOIN my_other_table t2 ON (t1.pkey1 = t2.fkey_mytable)
    GROUP BY t1.fld1, t1.fld2;

なじみのない地域で大規模なクエリを作成する際のいくつかの推奨事項は、そこに問題がある可能性があるためです。

  1. 問題のある領域で最小限の結合から始めます。うまくいくまで遊んでください。次に、残りを追加します。

  2. エラーと試行した内容を注意深く追跡してください。

于 2013-11-10T14:24:58.497 に答える