我试图从 2 个表中得到一些结果,它们是1 to n
关系。我想从一个表中获取 2 列,Extensao
从第二个表中获取一个结果HorarioExtensao
。我试图按月份过滤,但我只想考虑第二列的较低日期,因为相同的结果可以有来自不同月份的多个日期。
我已经尝试过查询,HorarioExtensao
然后SELECT
使用. 提前致谢。MIN(h.hora) BETWEEN $inicial and $final
INNER JOIN
Extensao
e.nome
e.codigo
$mes = $_GET["mes"];
$ano = $_GET["ano"];
$inicial = date("Y/m/d g:i:s",mktime(0,0,0,$mes,1,$ano));
$final = date("Y/m/t g:i:s",mktime(0,0,0,$mes,1,$ano));
$db = pg_connect("host=localhost dbname=saga user=**** password=****");
$result = pg_query($db,"SELECT e.nome, MIN(h.hora), e.codigo
FROM Extensao e
INNER JOIN HorarioExtensao h ON h.idExtensao = e.idExtensao
WHERE h.hora BETWEEN
to_timestamp('$inicial','YYYY/MM/DD HH:MI:SS') AND
to_timestamp('$final','YYYY/MM/DD HH:MI:SS')
GROUP BY 3,1");
编辑
在桌子上:
- Extensao
---------------------- | 身份证 | 名称 | 科迪戈 | |----|--------|--------| | 1 | N1 | 201 | | 2 | 氮气 | 223 | | 3 | N3 | 266 | ----------------------
- HorarioExtensao
-------------------------- | idExtensao | 霍拉 | |------------|------------| | 1 | 2012-01-21 | | 1 | 2012-01-22 | | 1 | 2012-02-15 | | 1 | 2012-02-16 | --------------------------
如果我尝试选择 month 2
,我不想得到任何结果,因为较低的日期idExtensao
是第 1 个月。如果我选择 month 1
,我只想得到 1 个结果,应该是N1,2012-01-21,201
. 另外,我知道2012-01-21
不是 a TIMESTAMP
,我只是在简化。