2017-07-04 1 views
0

Hallo ich finden versuchte, eine Anzahl der Zeilen von meiner unten Abfrage zu erhalten:haben eine Anzahl von Zeilen aus meiner postgresql Abfrage

 select count(substring(wsresult_question FROM '[0-9]+') as pumporder) AS totals, 
      job_id, 
      job_siteid, 
      job_completed 
      from webserviceresults w, jobs s 
      where job_siteid = '1401' 
      and job_id = wsresult_jobid 
      and job_completed is not null 
      and wsresult_question LIKE 'job.job_site_data.site_meters.pump.%' 
      and wsresult_category = 'Job' 
      group by pumporder,job_id,job_siteid,job_completed order by job_completed desc 

Ich versuchte dies und ich habe den Fehler wie

There was an SQL error: 
ERROR: syntax error at or near "as" LINE 1: ... count(substring(wsresult_question FROM '[0-9]+') as pumpord...^

In dieser Zeile substring(wsresult_question FROM '[0-9]+') as pumporder Ich nur müde, nur eine Zahl aus einigen verketteten Zeichenfolgen zu erhalten. Die concatenate Zeichenfolge wird wie

1.job.job_site_data.site_meters.pump.0.meter_calibration_record.meter_adjustedtofast

2.job.job_site_data.site_meters.pump.0.meter_calibration_record.meter_adjustedtoslow

3.job.job_site_data.site_meters.pump.1.meter_calibration_record.meter_adjustedtofast

So substring(wsresult_question FROM '[0-9]+') as pumporder ist es, die Zahlen wie 0,1 in Array zurück. Ich muss jetzt die Anzahl der Reihen zählen. Also bitte hilf mir dabei.

Bitte lassen Sie mich wissen, wenn Sie Fragen haben.

Vielen Dank im Voraus!

Antwort

1

Ihre Fehler bedeutet, dass Sie nicht einen Alias ​​für die Funktion erstellen sollte - nur für die Spalte, wenn Sie also as pumporder von count(substring(wsresult_question FROM '[0-9]+') as pumporder) entfernen, wird Fehler weggehen

Ihr Ansatz allerdings sehr zweifelhaft ist. Wenn Sie möchten, mit substring(wsresult_question FROM '[0-9]+') Anzahl der Zeilen zählen, sollten Sie besser statt:

select count(1) AS totals, 
     job_id, 
     job_siteid, 
     job_completed 
     from webserviceresults w, jobs s 
     where job_siteid = '1401' 
     and job_id = wsresult_jobid 
     and job_completed is not null 
     and wsresult_question ~ '^(job.job_site_data.site_meters.pump.)[0-9]' 
     and wsresult_category = 'Job' 
     group by pumporder,job_id,job_siteid,job_completed order by job_completed desc 

und schließlich job.job_site_data.site_meters.pump.0 die Zeichenfolge sieht aus wie json Pfad, so wäre es sinnvoller sein, zählt json Array-Länge-Funktion, nicht auf Reihen

Verwandte Themen