1

やあみんな私は表示したいデータを表現できるという点でこれほど近いです。問題の列はですa.state_Id。私が行った調査から、a.State_Idは範囲外であることがわかりました。私のsqlステートメントに欠けている部分は何ですか?

その時a.State_ID = c.State_Idだけ残しておくb.Product_Id = c.Product_Idとデータは表示されますが、状態や商品と照合する必要があります。

別の場所に追加する必要があることはわかっていますjoinが、方法がわかりません。誰かが私を助けることができればそれは素晴らしいでしょう!

SELECT a.state_id, 
       a.state_name, 
       a.state_abbreviatedname, 
       b.product_id, 
       b.product_name, 
       c.stateproduct_price 
FROM   states a, 
       products b 
       LEFT OUTER JOIN stateproducts c 
ON a.state_id = c.state_id AND b.product_id = c.product_id 

アップデート1

状態テーブルにデータが入力され、次のフィールドが含まれています。

State_Id
State_Name
State_AbbreviatedName

基本製品を含むために入力されたProductsテーブル。このテーブルには、次のフィールドがあります。

Product_Id
Product_Name

各州には同じ製品がありますが、各製品の価格は州ごとに異なります。これが、StateProductsテーブルがある理由です。このテーブルは空であり、私が作成したインターフェースによって1つずつ入力されます。Statesproductsテーブルには次のフィールドがあります

State_Id //reference/relational field to be user for comparison
Product_Id //reference/relational field to be user for comparison
StateProduct_Price //new field

したがって、価格列にNULL値が表示されることを理解しています。

米国と商品の表の一種のカーテション商品を返品することができました。ただし、このカーテションテーブルの右側に各組み合わせの価格を追加する必要があります。stateproductsテーブルが空であることを念頭に置いて、これをどのように達成しますか?

4

3 に答える 3

2

私はあなたが複数を持つことができ、異なることができるMany-to-Many関係を持っていると思います。したがって、マッピングテーブルに参加して、テーブル上の製品を取得できるようにする必要があります。StatesProductsProductsStatesStatesStateProductsProducts

SELECT  a.State_ID, 
        a.State_Name, 
        a.State_AbbreviatedName, 
        b.Product_Id, 
        b.Product_Name, 
        c.StateProduct_Price
FROM    States a
        INNER JOIN StateProducts c
            ON a.State_ID = c.State_Id
        INNER  JOIN Products b 
            ON b.Product_Id = c.Product_Id

結合についてさらに知識を深めるには、以下のリンクにアクセスしてください。

更新1

CROSS JOINキーワードを使用して、

SELECT a.state_id, a.state_name, a.state_abbreviatedname, b.product_id, b.product_name, c.stateproduct_price 
FROM   states a 
       CROSS JOIN products b 
       LEFT OUTER JOIN stateproducts c
          ON a.state_id = c.state_id AND 
             b.product_id = c.product_id
于 2013-02-11T15:50:51.130 に答える
2

AからC、CからBへ。

それぞれに対してLEFTJOINを実行することにより、実際の状態の製品に関係なく、すべての可能な状態になります。

SELECT 
      a.State_ID, 
      a.State_Name, 
      a.State_AbbreviatedName, 
      b.Product_Id, 
      b.Product_Name, 
      c.Product_Price 
   FROM 
      States a
         LEFT  JOIN StateProducts c 
            ON a.State_ID = c.State_Id 
            LEFT JOIN Products b 
               ON  c.Product_Id = b.Product_Id
于 2013-02-11T15:53:08.143 に答える
0

次のようにfrom句を記述してみてください。

from StateProducts c join
     States a
     on c.state_id = c.state_id join
     Products b
     on c.product_id = b.product_id

デカルト積の場合(つまり、状態と製品のすべての例を取得するため):

SELECT s.state_id, s.state_name, s.state_abbreviatedname, 
       p.product_id, p.product_name, 
       sp.stateproduct_price 
from States s cross join
     Products p left outer join
     StateProducts sp
     on sp.state_id = s.state_id and
        sp.product_id = p.product_id
于 2013-02-11T15:51:51.403 に答える