Ê
Những gì tôi sử dụng để làm trong những trường hợp đó là tạo một bảng với các lớp và tham gia chống lại chúng hoặc sử dụng truy vấn con để tạo danh sách các lớp.
Tôi nghĩ rằng điều đó mang lại một cách tiếp cận trực quan hơn và tôi nghĩ nó linh hoạt hơn vì bạn có thể cập nhật các lớp chỉ bằng cách cập nhật một bảng.
Một lợi ích khác là bạn cũng có thể nhận được các lớp trống.
phương pháp truy vấn con có thể trông giống như:
SELECT
d.disease_type,
ST_ConvexHull(ST_Collect(d.the_geom)) AS the_geom FROM disease_obs
RIGHT JOIN
(SELECT 0::float AS classbottom, 1.25::float AS classtop, 1::int AS classid
UNION ALL
SELECT 1.25::float AS classbottom, 3.5::float AS classtop, 2::int AS classid
UNION ALL
SELECT 3.5::float AS classbottom, 5::float AS classtop, 3::int AS classid) AS classes
ON disease_obs.continuous_value>=classes.classbottom AND disease_obs.continuous_value<classes.classbottom
GROUP BY classes.id;
Ở đây tôi đã sử dụng một tham gia đúng để cũng có được các lớp trống đôi khi có thể có ích. Nếu bạn không muốn những cái trống, chỉ cần thay đổi thành một tham gia bên trong.
Nếu bạn di chuyển các lớp vào một bảng và đặt phần còn lại của truy vấn vào dạng xem, bạn có thể thay đổi các lớp mà không cần chạm vào truy vấn.
HTH / Nicklas