No entiendo cómo usar generate_series para completar una tabla HTML donde la 'clave' de <tr> son los días del mes según el mes y el año que se selecciona con un <input type='month'> .
Por ahora (gracias a las respuestas que obtuve aquí), generé la consulta que solo me trae los días del mes y el año cuando lo selecciono en el mes seleccionado.
Algo como esto:
SELECT * FROM ( SELECT folio, fecha, extract(month FROM fecha) = $3 AS mes, EXTRACT(YEAR FROM fecha) = $4 AS anio, temperatura FROM medicion) m WHERE mes = TRUE AND anio = TRUE ORDER BY fecha ASCY obtuve esto en la tabla HTML:
| fecha | temperatura |
|---|---|
| 2022-03-04 | 60 |
| 2022-03-07 | 50 |
| 2022-03-09 | 70 |
Pero necesito algo como esto:
| fecha | temperatura |
|---|---|
| 2022-03-01 | 0 |
| 2022-03-02 | 0 |
| 2022-03-03 | 0 |
| 2022-03-04 | 60 |
| 2022-03-05 | 0 |
| 2022-03-06 | 0 |
| 2022-03-07 | 50 |
| 2022-03-08 | 0 |
| 2022-03-09 | 70 |
| 2022-03-10 | 0 |
con todos los días y diferentes para cada mes.
Algo como esto:
SELECT t.dt, coalesce(temperatura, 0) FROM generate_series('03/01/2022'::timestamp, (('03/01/2022'::timestamp + interval '1 month') - interval '1 day'), '1 day') AS t (dt) LEFT JOIN medicion ON t.dt = medicion.fecha; Esto supone que medicion.fecha es un campo de date . También necesitaría construir la fecha de inicio para generate_series() a partir de los valores de input para ingresar a la función, por ejemplo, $3/01/$4