私は3つのテーブルtblProduct、lkpFoodgroup、tblCustomerを持っています。そして、もう一つジャンクションテーブル:jctCustomerFoodgroup3つのテーブルに参加してヌル値を取得しようとしています
列は、このようなものです:
**tblProduct**
+---+----------------+
|PK |int_ProductID |
|FK |int_FoodgroupID |
| |str_ProductName |
+---+----------------+
**lkpFoodgroup**
+---+-------------------+
|PK |int_FoodgroupID |
| |str_FoodgroupHandle|
+---+-------------------+
**tblCustomer**
+---+----------------+
|PK |int_CustomerID |
| |str_CustomerName|
+---+----------------+
**jctCustomerFoodgroup**
+---+----------------+
|PK |int_CustomerID |
|PK |int_FoodgroupID |
| |int_ProductID |
+---+----------------+
これらのテーブルの最も簡単なものは、ルックアップです:
**lkpFoodgroup**
+---------------+-------------------+
|int_FoodgroupID|str_FoodgroupHandle|
+---------------+-------------------+
|1 |fruit |
|2 |meat |
|3 |bread |
|4 |cheese |
+---------------+-------------------+
次のお客様です:
**tblCustomer**
+----------------+-------------------+
|int_CustomerID |str_CustomerName |
+----------------+-------------------+
|1 |Bob |
|2 |Sally |
|3 |Jane |
|4 |Billy |
+----------------+-------------------+
tblProductには同じFoodgroupの商品がたくさんあります。また、それらの中に無い製品と一部の製品Foodgroupsがあることができます:
**tblProduct**
+---------------+-----------------+----------------+
|int_ProductID |int_FoodgroupID |str_ProductName |
+---------------+-----------------+----------------+
|1 |1 |apple |
|2 |1 |banana |
|3 |1 |orange |
|4 |1 |pear |
|5 |2 |chicken |
|6 |2 |beef |
|7 |2 |fish |
|8 |2 |turkey |
|9 |3 |white |
|10 |3 |wheat |
+---------------+-----------------+----------------+
ジャンクションテーブルの上にPKを組み合わせint_CustomerIDとint_FoodgroupIDです - どの顧客が唯一Foodgroupにつき1つの製品を選択することができることを意味している:
**jctCustomerFoodgroup**
+---------------+-----------------+--------------+------------------------+
|int_CustomerID |int_FoodgroupID |int_ProductID | --meaning |
+---------------+-----------------+--------------+------------------------|
|1 | 1 |1 | --Bob, fruit, apple |
|1 | 2 |6 | --Bob, meat, beef |
|1 | 3 |9 | --Bob, bread, white |
|2 | 1 |3 | --Sally, fruit, orange |
|2 | 2 |5 | --Sally, meat, chicken |
|3 | 1 |3 | --Jane, fruit, orange |
|3 | 3 |9 | --Jane, bread, white |
|3 | 2 |6 | --Jane, meat, beef |
+---------------+-----------------+--------------+------------------------+
私は私にこのような結果が得られますクエリを探しています:
**spGetCustomerProductSelections(1) --Get Bob's choices**
+----------------+---------------+-------------------+-------------+---------------+
|int_CustomerID |int_FoodgroupID|str_FoodgroupHandle|int_ProductID|str_ProductName|
+----------------+---------------+-------------------+-------------+---------------+
|1 |1 |fruit |1 |apple |
|1 |2 |meat |6 |beef |
|1 |3 |bread |9 |white |
|1 |4 |cheese |null |null |
+----------------+---------------+-------------------+-------------+---------------+
**spGetCustomerProductSelections(2) --Get Sally's choices**
+----------------+---------------+-------------------+-------------+---------------+
|int_CustomerID |int_FoodgroupID|str_FoodgroupHandle|int_ProductID|str_ProductName|
+----------------+---------------+-------------------+-------------+---------------+
|2 |1 |fruit |3 |orange |
|2 |2 |meat |5 |chicken |
|2 |3 |bread |null |null |
|2 |4 |cheese |null |null |
+----------------+---------------+-------------------+-------------+---------------+
**spGetCustomerProductSelections(4) --Get Billy's choices**
+----------------+---------------+-------------------+-------------+---------------+
|int_CustomerID |int_FoodgroupID|str_FoodgroupHandle|int_ProductID|str_ProductName|
+----------------+---------------+-------------------+-------------+---------------+
|4 |1 |fruit |null |null |
|4 |2 |meat |null |null |
|4 |3 |bread |null |null |
|4 |4 |cheese |null |null |
+----------------+---------------+-------------------+-------------+---------------+
任意の助けを?
データの代わりにcreate文とinsert文を生成した場合、より多くのトラクションが得られます。 – RichardTheKiwi
[WTF much](http://thedailywtf.com/Articles/adjYour_adjDaily_nCup_prOf_adjAkWTF.aspx)? – outis
ProductIDが製品の主キーであるため、異なる食品グループに対して製品を購入できるビジネスルールがない限り、接合テーブルCustomerFoodGroupはProductIDのみである必要があります。 – Nat