假设我有一张桌子
CREATE TABLE x (
id (primary),
store_id(foreign, references y (id)),
item_name,
item_quantity,
payment_type,
date
);
和另一个桌子
CREATE TABLE y (
id (primary),
name,
address
);
y表中已填充数据。我需要将数据插入x表中。 我输入的是y名称,因此应使用名称(和其他变量)填充x行。我只是不知道如何填写store_id。我了解外键在理论上的作用,我不知道如何在实践中应用它。 我需要它来检查y表中的名称,然后在x表中插入商店的ID。我该怎么做?我可以在插入语句中使用join吗?我可以使用WHERE语句吗?如何使用?
答案 0 :(得分:0)
假设 store_id 除外,您拥有在X表上需要插入的所有数据(假设插入太多,而不仅仅是一行),但是您有一个对应的名称到Y表,并且该名称在Y表中是唯一的。然后您可以执行以下操作:
INSERT INTO X (id, store_id, item_name, item_quantity, payment_type, date)
SELECT
id,
(SELECT Y.id FROM Y WHERE Y.name = tbl_values.name) AS store_id,
item_name,
item_quantity,
payment_type,
date
FROM
(
SELECT <id1> AS id, <y_name1> AS name, <item_name1> AS item_name, <item_quantity1> AS item_quantity, <payment_type1> AS payment_type, <date1> AS date
UNION
SELECT <id2> AS id, <y_name2> AS name, <item_name2> AS item_name, <item_quantity2> AS item_quantity, <payment_type2> AS payment_type, <date2> AS date
UNION
SELECT <id3> AS id, <y_name3> AS name, <item_name3> AS item_name, <item_quantity3> AS item_quantity, <payment_type3> AS payment_type, <date3> AS date
) AS tbl_values
答案 1 :(得分:-1)
您可以正常地为x表插入数据。
但是当填充store_id列时,如果数据在x表中将具有id列,则只能插入数据。
INSERT INTO y VALUES ( **'100a'**, 'jimmy', 'german');
INSERT INTO x VALUES ( '12ab', **'100a'**, 'bun', '21','credit card','2018/09/5');