以下の私の例では、2つのLEFT JOINを使って "event_name"にアクセスすると重複しています。私はこのように設定して112ケースを取得します。しかし、2 LEFT JOIN行を取り除いてクエリを実行すると、重複しない適切な100レコードが得られます。私は以下のコードでDISTINCTを試みましたが、私はまだ重複して112を取得します。3つの結合テーブル全体でSQLクエリで重複を避ける方法
SELECT "cases"."id", "cases"."date", "cases"."name", "event"."event_name"
FROM "cases"
LEFT JOIN "middle_table" ON "cases"."serial" = "middle_table"."m_serial"
LEFT JOIN "event" ON "middle_table"."e_serial" = "event"."ev_serial"
WHERE "cases"."date" BETWEEN '2012-12-11' AND '2012-12-13'
どのように私は私が唯一の「例」から正確な100例を望んでいることを指定し、私はより多くの行を生成するために参加するには、テーブルから何もしたくないことができますか?
ありがとうございます!
どのように関連して次のようにあなたは、(通常、COUNTやSUMなどの機能を、照合のために使用されている)「GROUP BY」キーワードを使用して、ユニークな値の選択を制限することができますか? 1: 'cases'から' middle_table'までのN?あなたはそれについて少し教えていただけますか? –
いくつかのテストデータを提供できますか? [sql-fiddle](http://www.sqlfiddle.com)はこれに最適です。 – Nico
私の場合は、1対多の結合で結合するために重複していました。私が見つけることができる唯一の解決策は、サブクエリを使用することでした。 Aには多くのBsがあります。 Bには多くのCと多くのDがあります。 Dには多くのEsと多くのFがあります。私はすべてのBs(検索文字列にマッチする)を取得する必要がありました。また、各マッチのすべての関連するCs、Es、Fsを集計しました。私は外部結合を使用してABCを取得し、次に2つのサブクエリを使用してDEとDFを集計しました。 – bambams