2010-07-26 49 views
0

我正在製作一個mySQL表,其中列出了大約70種產品以及它們是否兼容的信息。爲了簡化問題,我會假裝只有四種產品。如何填寫基於第一列的列

Product1 Product2 Compatible? 
A   A   Yes 
A   B   No 
A   C   Maybe 
A   D   Yes 
B   A   Yes 
B   B   Yes 
B   C   Yes 
B   D   No 
C   A   Yes 
C   B   Maybe 
C   C   Yes 
C   D   Yes 
D   A   Yes 
D   B   No 
D   C   Yes 
D   D   Yes 

如果我已經有喜歡的表(每一件產品都與其自身顯然兼容)

Product1 Product2 Compatible? 
A   A   Yes 
B   B   Yes 
C   C   Yes 
D   D   Yes 

有沒有一種方法可以讓我快速地填寫前兩列,使他們按照正確的方式? (所以我不必手動去做)

回答

0

做到這一點的一種方法是使用嵌套循環:如果你知道你有多少產品,可以稱之爲n個產品。

2^n總行將在您的表中。另外,產品1將有每個庫存項目n次。 (在您的示例4級的物品,所以2^4 = 16點總的行和每個項目發生在產品1列n = 4次。

因此嵌套循環,可以實現這樣做插入...

$inventory = array(A, B, C, D); 
for(i=0;i<2^n;i++){ 
    for(j=0; j<n; j++){ 
     //insert Column1=$inventory[i], Column2=$inventory[j]; 
    } 
} 
+0

我認爲你的意思是n^2。 (如果有70個產品,每個產品將有70行; 70 * 70) 但是,謝謝,我沒有考慮嘗試for循環。 – thomas 2010-07-26 12:25:00

+0

對不起,我可能會錯,但很高興我能幫上忙。 – Chris 2010-07-26 12:58:34

0
insert into compatibleProducts 
select distinct p1.ProductID, p2.ProductID, 'Maybe' 
from productTable p1 
join productTable p2 on p1.ProductID <> p2.ProductID 

我認爲你已經有了它們與自己兼容,根據你的第二個列表。

+0

對不起,你將不得不把它貶低一點對我來說 p1.ProductID和p2.ProductID。我會假設這些是第一和第二列。 p2(單獨)? – thomas 2010-07-26 12:30:16

+0

想法是將產品表加入自己,p1和p2是別名,以便單獨引用連接的每一邊。連接條件是產品不同。給你所需的70 * 70行集,我f用正確的表格/列名稱修改。 – Fosco 2010-07-26 13:52:45