2013-07-18 19 views
2

我有一張Products表,它映射到一個包含所有產品包含的所有項目的橋接表,因此產品A可以由幾個項目組成或僅包含一個項目。 (OTM)通過橋接表加入一對多關係

product_sub_item_bridge看起來是這樣的,

 
+------------+----------------------------+ 
| product_id | client_sub_product_item_id | 
+------------+----------------------------+ 
|  137 |      332 | 
|  138 |      333 | 
|  139 |      334 | 
|  140 |      332 | 
|  140 |      335 | 
+------------+----------------------------+ 

所以說,客戶訂單產品,項目和將被插入到一個名爲client_sub_products表裏面有關係訂單和存儲在client_sub_product_items表中的物品本身。

我想什麼,現在做的是由client_order_id也許GROUP_CONCAT() ID用得到的所有client_sub_products的,他們組,並以某種方式通過橋接表加入Products表到它,這樣我就可以得到一個包含列表對所有由client_sub_product_items組成的Products全部爲COUNT()。是這樣的...

 
+--------------+---------------------+ 
| product_name | count(product_name) | 
+--------------+---------------------+ 
| Product A |     15 | 
| Product B |     25 | 
+--------------+---------------------+ 

這裏是我迄今爲止,

SELECT GROUP_CONCAT(`client_sub_products`.`client_sub_product_item_id`) FROM `client_sub_products` LEFT JOIN `client_sub_product_items` ON `client_sub_product_items`.`id` = `client_sub_products`.`client_sub_product_item_id` GROUP BY `client_sub_products`.`client_order_id` ORDER BY `client_sub_products`.`client_order_id` ASC; 

我似乎無法讓過去的橋接表,我不知道我怎麼能加入到client_sub_product_items通過橋接表Products,因爲有產品有多個client_sub_product_item與它有關,我似乎在困惑我自己。

我希望我已經充分解釋了自己,而不只是困惑每個人......請讓我知道,如果我應該嘗試澄清上述任何事情。

回答

0

如果子產品不是可訂購實體,爲什麼要將子產品與客戶關聯?爲什麼不把產品分配給客戶,因爲從中可以很容易地爲每個客戶獲取子客戶端?就目前而言,您還沒有明確的方式來確定您示例中的子產品332是否與產品137或140相關。

+0

在我看來,您只需要對產品進行版本升級。並將客戶與當時有效的產品版本聯繫起來。如果您被要求實現新的功能,並且需要更改數據庫模式,那就這樣做吧。我不知道如何將子產品映射到沒有它的產品,特別是給出了與產品相關的子產品可能會隨時間而改變的附加環境。 –

相關問題