Как заполнить столбец на основе первого столбца - PullRequest
0 голосов
/ 26 июля 2010

Я делаю таблицу 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

Если у меня уже есть таблица типа (каждый продукт, очевидно, совместим с собой)* Есть ли способ, которым я могу быстро заполнить первые два столбца, чтобы они следовали правильному шаблону?(так что мне не нужно делать это вручную)

Ответы [ 3 ]

0 голосов
/ 26 июля 2010
insert into compatibleProducts
select distinct p1.ProductID, p2.ProductID, 'Maybe'
from productTable p1
join productTable p2 on p1.ProductID <> p2.ProductID

Я предположил, что у вас уже есть они совместимые с собой, на основе вашего второго списка.

0 голосов
/ 26 июля 2010

Один из способов сделать это - использовать вложенные циклы: если вы знаете, сколько у вас продуктов, давайте назовем это n продуктами.

2 ^ n всего строк будет в вашей таблице. Кроме того, продукт 1 будет иметь каждый элемент инвентаря n раз. (В вашем примере 4 элемента, поэтому 2 ^ 4 = 16 строк, и каждый элемент встречается в столбце product1 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 голосов
/ 26 июля 2010

Триггеры вставки после !

А при вставке с помощью phpMyadmin оставьте столбец пустым. пусть триггер заполнит последний столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...