繁体   English   中英

复制相关的 MySQL 表。 我有一张桌子,有相关的桌子,我想要一个 function 来复制很多

[英]Copying related MySQL Tables. I have a table, with related tables, and I'd like to have a function to copy the lot

好的,事情就是这样。

我有一个 MySQL 数据库,其中有这些表

Cruises
Fares
Itinerary
Supplements

在网站的管理面板中,我正在添加一个复制整个游轮的功能,以及相关的票价、行程和补充数据

所以第一个表 'Cruises' 有一个主键 (ID),并且在其他每个表中都作为 'cruise_id'

例如

Cruises
-------
id
destination
departs
returns
nights

Fares
-----
id
cruise_id
fare
offer
active

Itinerary
---------
id
cruise_id
port
type

Supplements
-----------
id
cruise_id
sharing
deposit

因此,当用户在管理面板中时,他们会看到现有游轮的列表以及复制链接

当用户点击复制巡航时,我想添加一个新的“巡航”,复制他们选择的巡航数据

现在我可以做到了,使用 INSERT SELECT。 但是,我也想复制票价、行程和补充,所以整个数据集都被复制了,所以以后可以做一些小的改动。

逻辑上(这显然不是 MySQL 语法)我想这样做

Select 一切从表游轮,票价,行程,补充

其中 Cruise(id) 等于选择的 Cruise(链接上传递的 url 参数)

并且 Fares, Itinerary, Supplements (cruise_id) 等于选择的游轮(链接上传递的url参数)

获取该数据并将 Cruise 字段插入到 Cruises 中,将 Fares 插入 Fares,将 itinerary 插入 Itinerary,将 Supplements 插入 Supplements

我知道我想做什么,问题是我可以吗,怎么做?

我认为您可以使用 INSERT SELECT 插入faresitinerarysupplements 就像是:

INSERT INTO `Fares` (`cruise_id`, `fare`, `offer`, `active`)
SELECT `cruise_id`, `fare`, `offer`, `active`
FROM `Fares`
WHERE `cruise_id` = xx;

INSERT INTO `Itinerary` (`cruise_id`, `port`, `type`)
SELECT `cruise_id`, `port`, `type`
FROM `Itinerary`
WHERE `cruise_id` = xx;

INSERT INTO `Supplements` (`cruise_id`, `sharing`, `deposit`)
SELECT `cruise_id`, `sharing`, `deposit`
FROM `Supplements`
WHERE `cruise_id` = xx;

其中,xx 应替换为所选巡航的 id。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM