2017-01-26 6 views
0

この質問は何度か尋ねられましたが、解決策のどれも私にとってはうまくいかないようです。私は多くの重複したデータを持つデータベースからデータを取得するためにノードポストグルを使用しています。 これは私が使用しているクエリですが、それはまだ重複を返します。Postgres一意でない列に基づいた最初のオカレンスを返す

var queryText = 'SELECT distinct on(kodartikulli) grupi, kodifikimartikulli2, pershkrimartikulli FROM products WHERE kodartikulli IN (' + params.join(',') + ')'; 

これが結果です:あなたが最初の二つの結果が同一で見ることができるように

 
[ anonymous { 
    grupi: 'Syze Dielli', 
    kodifikimartikulli2: 'Polar', 
    pershkrimartikulli: 'POLAR 556 03' } ] 
[ anonymous { 
    grupi: 'Syze Dielli', 
    kodifikimartikulli2: 'Polar', 
    pershkrimartikulli: 'POLAR 556 03' }, 
    anonymous { 
    grupi: 'Syze Dielli', 
    kodifikimartikulli2: 'Polar', 
    pershkrimartikulli: 'POLAR 558 01' } ] 

。私はそれらのいずれかを返すと、このような二を続行します:

 
[ anonymous { 
    grupi: 'Syze Dielli', 
    kodifikimartikulli2: 'Polar', 
    pershkrimartikulli: 'POLAR 556 03' } ], 
    anonymous { 
    grupi: 'Syze Dielli', 
    kodifikimartikulli2: 'Polar', 
    pershkrimartikulli: 'POLAR 558 01' } ] 
+0

私のコードに間違いがありました。これでデータを表示するようになりました。不便をかけてごめんなさい。 – Alfred

答えて

0

あなたはORDER BYが欠落しています

SELECT distinct on(kodartikulli) grupi, kodifikimartikulli2, pershkrimartikulli 
FROM products 
WHERE kodartikulli IN (' + params.join(',') + ')' + ' 
ORDER BY kodartikulli; 

これは、各kodartikulliのための任意の行を返します。通常は、どの行を返すかを指定する追加のキーがあります。

+0

それは 'GROUP BY'ではいけませんか? – joop

+0

@joop。 。 。いいえ、「distinct on」では、「ORDER BY」を使います。 –

0

別のkodartikulliのレコードを選択しています。ソースデータを表示する必要がありますが、確かにkodartikulliは2つのレコードで異なるため、両方のデータが抽出されます。

関連する問題