Project

General

Profile

1
--
2
-- PostgreSQL database dump
3
--
4

    
5
SET statement_timeout = 0;
6
SET lock_timeout = 0;
7
SET client_encoding = 'UTF8';
8
SET standard_conforming_strings = on;
9
SET check_function_bodies = false;
10
SET client_min_messages = warning;
11

    
12
SET search_path = "SALVIAS", pg_catalog;
13

    
14
--
15
-- Name: _plots_01_count_of_projects; Type: VIEW; Schema: SALVIAS; Owner: -
16
--
17

    
18
CREATE OR REPLACE VIEW _plots_01_count_of_projects AS
19
 SELECT count(*) AS projects
20
   FROM projects;
21

    
22

    
23
--
24
-- Name: _plots_02_list_of_project_names; Type: VIEW; Schema: SALVIAS; Owner: -
25
--
26

    
27
CREATE OR REPLACE VIEW _plots_02_list_of_project_names AS
28
 SELECT projects.project_name
29
   FROM projects;
30

    
31

    
32
--
33
-- Name: _plots_03_count_of_all_plots_in_this_source; Type: VIEW; Schema: SALVIAS; Owner: -
34
--
35

    
36
CREATE OR REPLACE VIEW _plots_03_count_of_all_plots_in_this_source AS
37
 SELECT count(DISTINCT (pm."SiteCode")::text) AS plots
38
   FROM (projects p
39
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)));
40

    
41

    
42
--
43
-- Name: _plots_04_count_of_plots_in_each_project_in_this_source; Type: VIEW; Schema: SALVIAS; Owner: -
44
--
45

    
46
CREATE OR REPLACE VIEW _plots_04_count_of_plots_in_each_project_in_this_source AS
47
 SELECT p.project_name, 
48
    count(*) AS plots
49
   FROM (projects p
50
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
51
  GROUP BY p.project_name;
52

    
53

    
54
--
55
-- Name: _plots_05_list_of_plot_codes_by_project; Type: VIEW; Schema: SALVIAS; Owner: -
56
--
57

    
58
CREATE OR REPLACE VIEW _plots_05_list_of_plot_codes_by_project AS
59
 SELECT p.project_name, 
60
    (pm."SiteCode")::text AS plot_code
61
   FROM (projects p
62
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)));
63

    
64

    
65
--
66
-- Name: _plots_06_list_of_plots_with_stem_measurements; Type: VIEW; Schema: SALVIAS; Owner: -
67
--
68

    
69
CREATE OR REPLACE VIEW _plots_06_list_of_plots_with_stem_measurements AS
70
 SELECT DISTINCT p.project_name, 
71
    (pm."SiteCode")::text AS plot_code
72
   FROM (((projects p
73
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
74
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
75
   JOIN stems s ON ((po."PlotObsID" = s.plotobs_id)))
76
  GROUP BY p.project_name, (pm."SiteCode")::text
77
  ORDER BY p.project_name, (pm."SiteCode")::text;
78

    
79

    
80
--
81
-- Name: _plots_06a_list_of_stems; Type: VIEW; Schema: SALVIAS; Owner: -
82
--
83

    
84
CREATE OR REPLACE VIEW _plots_06a_list_of_stems AS
85
 SELECT p.project_name, 
86
    (pm."SiteCode")::text AS plot_code, 
87
    (s.stem_id)::text AS stem_id
88
   FROM (((projects p
89
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
90
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
91
   JOIN stems s ON ((po."PlotObsID" = s.plotobs_id)))
92
  ORDER BY p.project_name, (pm."SiteCode")::text, (s.stem_id)::text;
93

    
94

    
95
--
96
-- Name: _plots_07_list_of_plots_which_use_counts_of_indiv_per_species; Type: VIEW; Schema: SALVIAS; Owner: -
97
--
98

    
99
CREATE OR REPLACE VIEW _plots_07_list_of_plots_which_use_counts_of_indiv_per_species AS
100
 SELECT DISTINCT p.project_name, 
101
    (pm."SiteCode")::text AS plot_code
102
   FROM ((projects p
103
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
104
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po."NoInd" > 1))))
105
  GROUP BY p.project_name, (pm."SiteCode")::text
106
  ORDER BY p.project_name, (pm."SiteCode")::text;
107

    
108

    
109
--
110
-- Name: _plots_08_list_of_plots_which_use_percent_cover; Type: VIEW; Schema: SALVIAS; Owner: -
111
--
112

    
113
CREATE OR REPLACE VIEW _plots_08_list_of_plots_which_use_percent_cover AS
114
 SELECT DISTINCT p.project_name, 
115
    (pm."SiteCode")::text AS plot_code
116
   FROM ((projects p
117
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
118
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po.cover_percent IS NOT NULL))))
119
  GROUP BY p.project_name, (pm."SiteCode")::text
120
  ORDER BY p.project_name, (pm."SiteCode")::text;
121

    
122

    
123
--
124
-- Name: _plots_09_list_of_plots_which_use_line_intercept; Type: VIEW; Schema: SALVIAS; Owner: -
125
--
126

    
127
CREATE OR REPLACE VIEW _plots_09_list_of_plots_which_use_line_intercept AS
128
 SELECT DISTINCT p.project_name, 
129
    (pm."SiteCode")::text AS plot_code
130
   FROM ((projects p
131
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
132
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po.intercept_cm IS NOT NULL))))
133
  GROUP BY p.project_name, (pm."SiteCode")::text
134
  ORDER BY p.project_name, (pm."SiteCode")::text;
135

    
136

    
137
--
138
-- Name: _plots_10_count_of_individuals_per_plot_in_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
139
--
140

    
141
CREATE OR REPLACE VIEW _plots_10_count_of_individuals_per_plot_in_each_project AS
142
 SELECT p.project_name, 
143
    (pm."SiteCode")::text AS plot_code, 
144
    sum(po."NoInd") AS individuals
145
   FROM ((projects p
146
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
147
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
148
  GROUP BY p.project_name, (pm."SiteCode")::text
149
  ORDER BY p.project_name, (pm."SiteCode")::text;
150

    
151

    
152
--
153
-- Name: VIEW _plots_10_count_of_individuals_per_plot_in_each_project; Type: COMMENT; Schema: SALVIAS; Owner: -
154
--
155

    
156
COMMENT ON VIEW _plots_10_count_of_individuals_per_plot_in_each_project IS '
157
Method: Sum on NoInd (number of individuals) column.
158
Note 1: `individuals` should be NULL for plots which use percent cover or line-intercept methods.
159
Note 2: Do not count records in plotObservations table, as this will give incorrect total for plots such as Gentry plot, which count individuals per species per subplot
160
';
161

    
162

    
163
--
164
-- Name: _plots_10a_aggregate_observation_individual_counts; Type: VIEW; Schema: SALVIAS; Owner: -
165
--
166

    
167
CREATE OR REPLACE VIEW _plots_10a_aggregate_observation_individual_counts AS
168
 SELECT p.project_name, 
169
    (pm."SiteCode")::text AS plot_code, 
170
    (po."PlotObsID")::text AS individual_id, 
171
    po."NoInd" AS individuals
172
   FROM ((projects p
173
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
174
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
175
  ORDER BY p.project_name, (pm."SiteCode")::text, (po."PlotObsID")::text;
176

    
177

    
178
--
179
-- Name: VIEW _plots_10a_aggregate_observation_individual_counts; Type: COMMENT; Schema: SALVIAS; Owner: -
180
--
181

    
182
COMMENT ON VIEW _plots_10a_aggregate_observation_individual_counts IS '
183
Note 1: `individuals` should be NULL for plots which use percent cover or line-intercept methods.
184
';
185

    
186

    
187
--
188
-- Name: _plots_11_count_of_stems_per_plot_in_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
189
--
190

    
191
CREATE OR REPLACE VIEW _plots_11_count_of_stems_per_plot_in_each_project AS
192
 SELECT p.project_name, 
193
    (pm."SiteCode")::text AS plot_code, 
194
    count(DISTINCT s.stem_id) AS stems
195
   FROM (((projects p
196
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
197
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
198
   JOIN stems s ON ((po."PlotObsID" = s.plotobs_id)))
199
  GROUP BY p.project_name, (pm."SiteCode")::text
200
  ORDER BY p.project_name, (pm."SiteCode")::text;
201

    
202

    
203
--
204
-- Name: VIEW _plots_11_count_of_stems_per_plot_in_each_project; Type: COMMENT; Schema: SALVIAS; Owner: -
205
--
206

    
207
COMMENT ON VIEW _plots_11_count_of_stems_per_plot_in_each_project IS '
208
Method: count records in stems table
209
';
210

    
211

    
212
--
213
-- Name: _plots_12_count_of_verbatim_taxa_per_plot_in_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
214
--
215

    
216
CREATE OR REPLACE VIEW _plots_12_count_of_verbatim_taxa_per_plot_in_each_project AS
217
 SELECT a.project_name, 
218
    a.plot_code, 
219
    count(a.taxon) AS taxa
220
   FROM ( SELECT DISTINCT p.project_name, 
221
            (pm."SiteCode")::text AS plot_code, 
222
            btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text)))))) AS taxon
223
           FROM ((projects p
224
      JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
225
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))) a
226
  GROUP BY a.project_name, a.plot_code
227
  ORDER BY a.project_name, a.plot_code;
228

    
229

    
230
--
231
-- Name: VIEW _plots_12_count_of_verbatim_taxa_per_plot_in_each_project; Type: COMMENT; Schema: SALVIAS; Owner: -
232
--
233

    
234
COMMENT ON VIEW _plots_12_count_of_verbatim_taxa_per_plot_in_each_project IS '
235
Note: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegBIEN
236
';
237

    
238

    
239
--
240
-- Name: _plots_13_list_of_distinct_verbatim_taxa_in_each_plot_in_each_p; Type: VIEW; Schema: SALVIAS; Owner: -
241
--
242

    
243
CREATE OR REPLACE VIEW _plots_13_list_of_distinct_verbatim_taxa_in_each_plot_in_each_p AS
244
 SELECT DISTINCT p.project_name, 
245
    (pm."SiteCode")::text AS plot_code, 
246
    btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text)))))) AS taxon
247
   FROM ((projects p
248
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
249
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
250
  ORDER BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text))))));
251

    
252

    
253
--
254
-- Name: VIEW _plots_13_list_of_distinct_verbatim_taxa_in_each_plot_in_each_p; Type: COMMENT; Schema: SALVIAS; Owner: -
255
--
256

    
257
COMMENT ON VIEW _plots_13_list_of_distinct_verbatim_taxa_in_each_plot_in_each_p IS '
258
Note: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegBIEN.
259
';
260

    
261

    
262
--
263
-- Name: _plots_14_count_of_indiv_per_verbatim_taxon_per_plot_in_each_pr; Type: VIEW; Schema: SALVIAS; Owner: -
264
--
265

    
266
CREATE OR REPLACE VIEW _plots_14_count_of_indiv_per_verbatim_taxon_per_plot_in_each_pr AS
267
 SELECT DISTINCT p.project_name, 
268
    (pm."SiteCode")::text AS plot_code, 
269
    btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text)))))) AS taxon, 
270
    sum(po."NoInd") AS individuals
271
   FROM ((projects p
272
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
273
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
274
  GROUP BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text))))))
275
  ORDER BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text))))));
276

    
277

    
278
--
279
-- Name: VIEW _plots_14_count_of_indiv_per_verbatim_taxon_per_plot_in_each_pr; Type: COMMENT; Schema: SALVIAS; Owner: -
280
--
281

    
282
COMMENT ON VIEW _plots_14_count_of_indiv_per_verbatim_taxon_per_plot_in_each_pr IS '
283
Note: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegBIEN
284
';
285

    
286

    
287
--
288
-- Name: _plots_15_pct_cover_of_each_verb_taxon_in_each_plot_in_each_pro; Type: VIEW; Schema: SALVIAS; Owner: -
289
--
290

    
291
CREATE OR REPLACE VIEW _plots_15_pct_cover_of_each_verb_taxon_in_each_plot_in_each_pro AS
292
 SELECT DISTINCT p.project_name, 
293
    (pm."SiteCode")::text AS plot_code, 
294
    btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text)))))) AS taxon, 
295
    sum((po.cover_percent)::double precision) AS totalpercentcover
296
   FROM ((projects p
297
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
298
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po.cover_percent IS NOT NULL))))
299
  GROUP BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text))))))
300
  ORDER BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text))))));
301

    
302

    
303
--
304
-- Name: VIEW _plots_15_pct_cover_of_each_verb_taxon_in_each_plot_in_each_pro; Type: COMMENT; Schema: SALVIAS; Owner: -
305
--
306

    
307
COMMENT ON VIEW _plots_15_pct_cover_of_each_verb_taxon_in_each_plot_in_each_pro IS '
308
Note 1: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegbien
309
Note 2: Grouping mean cover for entire plot allows inclusion of plots with subplots (separate cover measure for each species in each subplot),  plots with strata (separate cover measures for each species in each stratum), and plots without subplots or strata (one cover measure per species per plot) in same query.
310
Note 3: currently, there are no SALVIAS percent cover plots in BIEN
311
';
312

    
313

    
314
--
315
-- Name: _plots_16_intercepts_for_each_verb_taxon_in_each_plot_each_proj; Type: VIEW; Schema: SALVIAS; Owner: -
316
--
317

    
318
CREATE OR REPLACE VIEW _plots_16_intercepts_for_each_verb_taxon_in_each_plot_each_proj AS
319
 SELECT DISTINCT p.project_name, 
320
    (pm."SiteCode")::text AS plot_code, 
321
    btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text)))))) AS taxon, 
322
    po.intercept_cm
323
   FROM ((projects p
324
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
325
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po.intercept_cm IS NOT NULL))))
326
  ORDER BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull((po."Family")::text, ''::text), ifnull((po."Genus")::text, ''::text), ifnull((po."Species")::text, ''::text), if((po.infra_ep_1 IS NULL), ifnull((po.auth)::text, ''::text), btrim(concat_ws(' '::text, ifnull((po.infra_rank_1)::text, ''::text), ifnull((po.infra_ep_1)::text, ''::text), ifnull((po.infra_auth_1)::text, ''::text))))));
327

    
328

    
329
--
330
-- Name: VIEW _plots_16_intercepts_for_each_verb_taxon_in_each_plot_each_proj; Type: COMMENT; Schema: SALVIAS; Owner: -
331
--
332

    
333
COMMENT ON VIEW _plots_16_intercepts_for_each_verb_taxon_in_each_plot_each_proj IS '
334
Note 1: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegbien
335
Note 2: Grouping mean cover for entire plot combines plots with subplots (separate cover measure for each species in each subplot) with plots with strata (separate cover measures for each species in each stratum) with plots without subplots or strata (one cover measure per species per plot.
336
';
337

    
338

    
339
--
340
-- Name: _plots_17_count_of_subplots_per_plot_for_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
341
--
342

    
343
CREATE OR REPLACE VIEW _plots_17_count_of_subplots_per_plot_for_each_project AS
344
 SELECT p.project_name, 
345
    (pm."SiteCode")::text AS plot_code, 
346
    count(DISTINCT po."Line") AS subplots
347
   FROM ((projects p
348
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
349
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
350
  GROUP BY p.project_name, (pm."SiteCode")::text
351
  ORDER BY p.project_name, (pm."SiteCode")::text;
352

    
353

    
354
--
355
-- Name: _plots_18_list_of_subplots_codes_for_each_plot_for_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
356
--
357

    
358
CREATE OR REPLACE VIEW _plots_18_list_of_subplots_codes_for_each_plot_for_each_project AS
359
 SELECT DISTINCT p.project_name, 
360
    (pm."SiteCode")::text AS plot_code, 
361
    po."Line" AS subplot_code
362
   FROM ((projects p
363
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
364
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND ((pm."SiteCode")::text IS NOT NULL))))
365
  ORDER BY p.project_name, (pm."SiteCode")::text, po."Line";
366

    
367

    
368
--
369
-- Name: VIEW _plots_18_list_of_subplots_codes_for_each_plot_for_each_project; Type: COMMENT; Schema: SALVIAS; Owner: -
370
--
371

    
372
COMMENT ON VIEW _plots_18_list_of_subplots_codes_for_each_plot_for_each_project IS '
373
Note: includes plots with and without subplots
374
';
375

    
376

    
377
--
378
-- Name: _plots_19_count_of_censuses_per_plot_in_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
379
--
380

    
381
CREATE OR REPLACE VIEW _plots_19_count_of_censuses_per_plot_in_each_project AS
382
 SELECT p.project_name, 
383
    (pm."SiteCode")::text AS plot_code, 
384
    count(DISTINCT ARRAY[po.census_date]) AS inventories
385
   FROM ((projects p
386
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
387
   LEFT JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND ((pm."SiteCode")::text IS NOT NULL))))
388
  GROUP BY p.project_name, (pm."SiteCode")::text
389
  ORDER BY p.project_name, (pm."SiteCode")::text;
390

    
391

    
392
--
393
-- PostgreSQL database dump complete
394
--
395

    
(4-4/5)