私は自分のjava/hibernateアプリケーションのビューを提供するためにいくつかの列で結合する2つのテーブルを持っています。これは次のようになります。VIEWSでDISTINCTを正しく使用する方法
CREATE VIEW customer_contacts AS cc
SELECT DISTINCT ON (cust.id) cust.id
cust.company
cust.zip
...
con.name
con.forename
...
FROM contacts con
LEFT JOIN customer cust ON con.customer = cust.id
ORDER BY cust.id
これまでのところとても良いです。非常に簡単です。私のようなビューのSELECT作る場合 は:
SELECT *
FROM cc
WHERE name ilike '%schult%'
私は13結果を取得します。
私は75の結果を得た
SELECT DISTINCT ON (cust.id) cust.id
cust.company
cust.zip
...
con.name
con.forename
...
FROM contacts con
LEFT JOIN customer cust ON con.customer = cust.id
WHERE name ilike '%schult%'
ORDER BY cust.id
viewステートメントで直接、同じクエリを作る場合は! 私はそれが結果を壊すDISTINCTだと分かりました。しかし、なぜ?
どうすれば正しく使用できますか?
あなたが実行している "同じクエリ" の正確なSQLテキストを表示してください。 –
こんにちはピーター、私は私の質問を明確にし、私は直接の声明を書いた。 – M46
しかし、2番目のクエリで 'WHERE name ilike '%schult%''という条件を忘れた... –