Ticket #2911 (closed bug: wontfix)
Enable the query builder for view that don't have unique id
| Reported by: | pinux | Owned by: | jef |
|---|---|---|---|
| Priority: | major: does not work as expected | Milestone: | Version 1.6.0 |
| Component: | Data Provider | Version: | Trunk |
| Keywords: | Postgis, Query Builder, View | Cc: | |
| Platform Version: | Platform: | Windows | |
| Must Fix for Release: | No | Awaiting user input: | no |
Description
I have 2 tables: CREATE TABLE polygon (
gid int UNIQUE, name varchar(100) NOT NULL, .... PRIMARY KEY (gid)
) ;
And,
CREATE TABLE line(
gid int UNIQUE, name varchar(100) NOT NULL, .... PRIMARY KEY (gid)
) ;
And a View that makes buffers for the table line and groups the elements by their names:
CREATE OR REPLACE VIEW line_buffer AS SELECT DISTINCT min(l.gid) as gid, l.name, st_union(st_buffer(l.the_geom, 100)) AS the_geom FROM line l GROUP BY l.name ORDER BY l.name;
When I create a View to select the elements from the table polygon that are intersected by the elements in line_buffer, like this:
CREATE OR REPLACE VIEW intersection AS
SELECT DISTINCT p.*
FROM
polygon p, line l
WHERE st_intersects(p.the_geom, ST_merge(l.the_geom)) = TRUE;
When I insert more then 1 element with different names in the table line the result is a View without a column with unique value, because more than one element in line intersects the elements in polygon. If I try to add a query (Build query) in the Add Postgis tables window, qgis tell me that the view don't have a valid column with unique value. But if i write the query ("name"='test1') directly under Sql, I can open the view in qgis. So I suggest that if a view don't have a valid column with unique value it should be possible to open the Build query.