如何插入影响多个表的值?



我的模式是这样的:

Tables:
Titles ->         ID |     TitleID    | TitleName | ArtistNameFull | Length
Artists->         ID | ArtistNameRoot
ArtistRelation->  ID | TitleID | ArtistID | Relationship

ArtistNameFull是艺术家的名字,包括:"feat, with, include, featured, presents等"。

artistnamameroot只是没有"壮举,包括,特色等"的艺术家。

ArtistRelation中它们之间的关系本质上是在另一个索引为1-15的表中,以及它们对应的"后缀"。例如,索引3将是"feature",索引7将是"with"。

我有大约1000行数据,我需要插入到我的表中,这只是(Title, Artist, length)的值。

目前的方法:到目前为止,我的方法是把所有这些数据,我需要插入到一个临时表本身,然后调用sql函数,选择唯一的值之间的标题表和临时表,然后插入它们,如果我只插入到标题表,这是有效的,但我还需要插入到艺术家这是一个更棘手的,因为我需要摆脱任何东西,但根艺术家。所以我试着用php从我的临时表中抓取数据,并使用正则表达式来获得根艺术家,这对于获得根艺术家来说是很神奇的,但是把所有这些连接在一起,并弄清楚如何将两者插入到艺术家关系中,当以前的插入已经有艺术家时,很难把我的头包围起来。

无论如何,我想我只是需要一些智慧的话语,如果我以一种非常低效的方式来做这件事,或者这是通常的做法,我只能继续下去。

PHP在操作字符串方面比SQL好得多。所以继续这样做。使用临时表也是一种有效的方法。

您需要使用PHP从temp表中提取所有数据。

对于每个结果解析出艺术家名称并将其插入到artists中。

在每次插入之后,你想要获得插入的最后一个ID (PDO和mysqli_有这个方法),然后将该ID和艺术家名称存储在一个数组中,以便ID可以稍后使用。

然后插入标题信息。

每次插入后,获取插入的最后一个ID,并使用它和艺术家ID将一条记录插入到关系表中。

这有帮助吗?

最新更新