2 つのテーブルから結果を取得しようとしていますが、それらは1 to n
リレーションです。Extensao
1 つのテーブルから 2 つの列を取得し、2 番目のテーブルから 1 つの結果を取得したいと考えていますHorarioExtensao
。月ごとにフィルター処理しようとしていますが、同じ結果に異なる月の複数の日付が含まれる可能性があるため、2 番目の列の下の日付を考慮したいだけです。
私はすでにクエリを実行してから、を使用しHorarioExtensao
て別のクエリを実行しようとしましたが、問題はそこにあり、 forを選択する場所とを配置する場所がわかりません。前もって感謝します。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");
編集
テーブル:
- エクステンサオ
---------------------- | | ID | ノメ | コディゴ | |----|------|--------| | | 1 | N1 | 201 | | | 2 | N2 | 223 | | | 3 | N3 | 266 | ----------------------
- ホラリオエクステンサオ
--------------------------- | | idExtensao | ホラ | |------------|------------| | | 1 | 2012-01-21 | | | 1 | 2012-01-22 | | | 1 | 2012-02-15 | | | 1 | 2012-02-16 | ---------------------------
month を選択しようとすると2
、結果を取得したくありません。これは、同じ日付がidExtensao
月 1の1
ものであるためN1,2012-01-21,201
です。また、私は単純化しているだけで2012-01-21
はないことを知っています。TIMESTAMP