マップ上に配置されたオブジェクトに関する情報を格納するために使用される MapObjects というテーブルがあります。組織が配置されているすべての場所を格納するために使用される OrgLocations という別のテーブルがあります。場所は緯度と経度で定義されます。最後に、マップ オブジェクトを OrgLocations テーブルの組織にマップする ObjectLocations という別のテーブルがあります。マップ上に表示されるオブジェクトの場所のサブセットを示すために使用されます。
たとえば、組織 (OrgID = 10) に、ダラス、アトランタ、マイアミ、ニューヨークの 4 つの場所 (OrgLocations テーブルに格納されている) があるとします。この組織には、アトランタとマイアミに関連付けられた 1 つのマップ オブジェクトがあります (MapObjects.ID = 5)。
私のデータセットは、Atlanta と Miami に対応する OrgLocations からのレコードを返さなければなりません (ただし、Dallas と New York は含まれません)。ただし、どの場所にも割り当てられていない (ObjectLocations にレコードがない) マップ オブジェクトを使用することもできます。これらのマップ オブジェクトは依然として組織に属していますが、特定の場所には関連付けられていません。この場合、組織に割り当てられたすべての場所を返したいと考えています。
これが条件付き結合または WHERE 句の何かによって行われるかどうかはわかりません。以下は、いくつかのデータでテーブルがどのように見えるかです:
組織の場所
ID OrgID Latitude Longitude Name
0 10 32.780 -96.798 Dallas
1 10 33.7497 -84.394 Atlanta
2 10 25.7863 -80.2270 Miami
3 10 40.712 -74.005 New York
4 11 42.348 -83.071 Detroit
オブジェクトの場所
OrgLocationID MapObjectID
1 5
2 5
MapObject
ID OrgID
5 10
6 11
この例では、MapObjects.ID が 5 の場合、このオブジェクトの 2 つの場所が ObjectLocations に存在します: アトランタとマイアミです。MapObjects.ID が 6 の場合、ObjectLocations にレコードがないため、組織 (OrgID = 11) に属する OrgLocatons のすべての場所が返されます。
助けてくれてありがとう!