私は非常に厄介な問題に直面しています。PostgreSQLのクエリは、より広い検索でより少ない結果を返します
私のクエリは非常に複雑ですので、私はそれのより単純なバージョンを使用します。
select distinct on (a.batch) c.id,a.partid,b.partname,c.stock_stock,
from components a
join parts b using(partid)
left join (select * from componentsreport($1)) c using (partid)
JOIN start_work d on d.batchid=a.batchid
where b.issub
group by c.id,a.partid,b.partname,c.stock
order by a.batch;
このクエリは、多くの行を与えるが、c.id=3436
のための唯一の1行目:私は別の基準c.id=3436
追加するとき
3436 124 'CPU-A' 450
しかし:
3436 124 'CPU-A' 450
3436 125 'CPU-A' 130
3436 125 'CPU-A' 660
3436 126 'CPU-A' 0
3436 127 'CPU-A' 40
3436 128 'CPU-A' 40
:
select distinct on (a.batch) c.id,a.partid,b.partname,c.stock_stock,
from components a
join parts b using(partid)
left join (select * from componentsreport($1)) c using (partid)
JOIN start_work d on d.batchid=a.batchid
where c.id=3436 and b.issub
group by c.id,a.partid,b.partname,c.stock
order by a.batch;
を私は6行を取得
どちらが正しいです!
条件を追加すると、どのように行が増えるのでしょうか?何かが盗まれているように見えます!私はこの問題を引き起こす可能性がどのようなアドバイスをしてください
のPostgreSQL 9.3.3を使用してい
。
「c.in: 'where c.id = 3436」の推論は、LEFT JOINをプレーン結合に減らします。 – wildplasser
@wildplasserそれは問題ではありません。両方のケースで同じ結果が得られます。 – ban
それは私が言ったことです。 LEFT JOINは、c.idを固定値にする場合は意味がありません。 – wildplasser