我想做什么(见下图寻求帮助):
1)从两个列表中创建一个具有唯一键的列表
2) 使用该新列表从黑色区域中选择红色子方块(将红色方块簇视为具有自己的 area_key 的区域)
3) 现在将两个表(绿色和橙色)中的数据连接到子方块;这需要三个属性明确(area_key、id_1、id_2)
4)结果:红色方块,带有包含额外数据的子方块,如果存在,都在一组中
注意:在 biglist 中找不到区域键;我必须连接 biglist -(sar_id)- subareas -(area_id)- Areas,以获取信息
到目前为止我的尝试..
这部分工作:
SELECT bl.item_id, bl.item_geometry, bl.id_1, bl.id_2, ar.area_key, ar.name
FROM biglist bl, subareas sar, areas ar
WHERE area_key IN
(SELECT DISTINCT area_key
FROM areas ar
WHERE ar.area_key IN (SELECT area_key FROM sublist_1)
OR ar.area_key IN (SELECT area_key FROM sublist_2))
AND sar.area_id = ar.area_id AND bl.sar_id = sar.sar_id
我需要集成的内容(部分语法不正确!),但不能正确:
LEFT JOIN (SELECT tb1.name, tb1.id_1, tb1.id_2, tb1.info1, tb1.info2, tb1.area_key
FROM Table1 tb1) ON ar.area_key = tb1.area_key
AND bl.id_1 = tb1.id_1 AND bl.id_2 = tb1.id_2
LEFT JOIN (SELECT tb2.name, tb2.id_1, tb2.id_2, tb2.info1, tb2.info2, tb2.area_key
FROM Table2 tb2) ON ar.area_key = tb2.area_key
AND bl.id_1 = tb2.id_1 AND bl.id_2 = tb2.id_2
图片: