Первая таблица
$sql = "CREATE TABLE if not exists mainInfo (
sku varchar(20) primary key not null,
name varchar(20) not null,
price int(30) not null,
type int(2) not null
)";
Вторая таблица
$sql="CREATE TABLE if NOT EXISTS properties (
size int(9),
bWeight int(9),
fHeight int(9),
fWeight int(9),
fLenght int(9),
sku varchar(20) not null,
CONSTRAINT FK_mainInfoProperties FOREIGN KEY (sku) REFERENCES mainInfo(sku)
)";
Внутренняя таблица соединений
$sql = "CREATE TABLE if NOT EXISTS allInfo (
sku varchar(20) primary key not null,
name varchar(20) not null,
price int(30) not null,
type int(2) not null,
size int(9),
bWeight int(9),
fHeight int(9),
fWeight int(9),
fLenght int(9)
)";
$sql = "INSERT INTO allInfo (sku, name, price, type, size, bWeight,
fHeight, fWeight, fLenght)
SELECT mainInfo.sku, name, price, type, size, bWeight, fHeight,
fWeight, fLenght
FROM mainInfo INNER JOIN properties
ON mainInfo.sku = properties.sku";
В первый раз я использую этот код, он работает, но когда я добавляю новые строки в первую и вторую таблицы, таблица внутреннего соединения не обновляет его, предоставляя мне повторяющуюся запись для ключа "PRIMARY", как я могу обновить эту таблицу, добавив новые строки, но оставив те, которые уже там нетронутые?
Mark Suk Field в allInfo как внешний ключ и добавьте новый первичный ключ, такой как allInfoId, чтобы однозначно идентифицировать запись
Думаю, вам не нужна третья таблица. Вы легко можете получить уникальную запись, используя простое соединение.
Select m.sku ,a.bWeight, a.fHeight, a.fWeight , a.fLenght from mainfon join properties a on m.sku=a.suk where a.suk=your_id
Я предложил два использовать только две таблицы, не использовать вторую
sku
в качестве первичного ключа, что означает, что может существовать только одна строка с определенным sku (они должны быть уникальными). Таблицаproperties
вероятно, содержит несколько строк с одним и тем же sku. Вы действительно хотите, чтобыallInfo
имелsku
качестве первичного ключа?