重複しているか、左端の結合を使用しているのが発生しています。左の結合を使用してレコードを無効にする
表Sales
は、数多くのブランドを持っているが、唯一異なるpricingsと同じブランド名の2:BRAND 2
。
表CSR Product
には2つのBRAND 2
ブランドがありますが、それぞれ異なる州です。
表Product State Package
には2つがありませんBRAND 2
です。
私はbrand
フィールドでこれらの3つを結合していますが、まだそれぞれが表示されていますBRAND 2
テーブルに追加するとサイズが増えます。これをどうすれば解決できますか?
私はすべてSales
レコードが必要なので、なぜ私はセールスに加わりましたか?これは、最初の左結合が3020レコードであり、2番目の左結合が450000レコードであったところで直面しているより大きな問題の小さな例です。
私の質問は:私はすべての売上レコードを取得するためにLEFT JOIN
INGだなら、なぜ他の二つの結合されたテーブルにBRAND 2
を複製追加すると、販売記録を掛けていますか?
販売:
brand | pricing
----------------
BRAND 1 1
BRAND 2 2 <--- Brand 2
BRAND 2 7 <--- Brand 2
BRAND 3 3
BRAND 4 4
BRAND 5 5
BRAND 6 6
製品の状態パッケージ:
brand | state
----------------
BRAND 5 WA
BRAND 4 AZ
BRAND 2 MO
BRAND 1 VT
BRAND 8 SD
CSR製品:
brand | state
----------------
BRAND 2 CT <--- Brand 2
BRAND 3 MA
BRAND 2 CA <--- Brand 2
BRAND 4 GA
BRAND 5 LA
BRAND 9 WA
問合せ:
SELECT s.brand,
tcp.brand as csr_brand,
tpsp.brand as psp_brand
FROM test_sales s
LEFT JOIN test_csr_product tcp
ON (s.brand = tcp.brand)
LEFT JOIN test_product_state_package tpsp
ON (s.brand = tpsp.brand);
出力:Sales
で3 BRAND 2
で
-- Need all sales records
sales_brand | csr_brand | psp_brand
-------------+-----------+-----------
BRAND 1 | | BRAND 1
BRAND 2 | BRAND 2 | BRAND 2
BRAND 2 | BRAND 2 | BRAND 2
BRAND 2 | BRAND 2 | BRAND 2
BRAND 2 | BRAND 2 | BRAND 2
BRAND 3 | BRAND 3 |
BRAND 4 | BRAND 4 | BRAND 4
BRAND 5 | BRAND 5 | BRAND 5
BRAND 6 | |
(9 rows)
:あなたが売上全体sale_price
ための重複があります見ることができます:それは
sales_brand | sale_price | csr_brand | psp_brand
-------------+------------+-----------+-----------
BRAND 1 | 1 | | BRAND 1
BRAND 2 | 2 | BRAND 2 | BRAND 2
BRAND 2 | 2 | BRAND 2 | BRAND 2
BRAND 2 | 7 | BRAND 2 | BRAND 2
BRAND 2 | 7 | BRAND 2 | BRAND 2
BRAND 2 | 10 | BRAND 2 | BRAND 2
BRAND 2 | 10 | BRAND 2 | BRAND 2
BRAND 3 | 3 | BRAND 3 |
BRAND 4 | 4 | BRAND 4 | BRAND 4
BRAND 5 | 5 | BRAND 5 | BRAND 5
BRAND 6 | 6 | |
(11 rows)
あなたの希望する出力の例を書いてもいいですか? –