【问题标题】:How would I go about inserting values that affect multiple tables?我将如何插入影响多个表的值?
【发布时间】:2016-10-19 01:14:03
【问题描述】:

我的架构是这样的:

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

ArtistNameFull 是艺术家的名字,包括:“feat, with, include, features, present, etc.”

ArtistNameRoot 只是没有“壮举,包括、特色等”的艺术家。

ArtistRelation 中它们之间的关系在另一个表中,该表具有索引 1-15 及其相应的“后缀”。例如,索引 3 将是“特色”,而索引 7 将是“与”。

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

目前的方法: 到目前为止,我的方法是将所有需要插入的数据放入临时表本身,然后调用 sql 函数在 Title 表和临时表之间选择唯一值,然后插入它们,如果我要插入到只是 Titles 表,但我还需要插入到 Artists 中,这有点棘手,因为我需要摆脱除根艺术家之外的任何东西。所以然后我尝试使用 php 从我的临时表中获取数据并使用正则表达式来获取根艺术家,这对于获取根艺术家来说是奇迹,但是将所有这些连接在一起并弄清楚如何将两者插入到艺术家关系中可能已经有以前插入的艺术家了,我很难理解。

无论如何,如果我以一种非常低效的方式处理这件事,或者这就是通常的做法,我只需要继续前进,我想我只需要智慧的话。

【问题讨论】:

  • 我不太明白你在问什么。如果您想知道如何修复您的代码,您需要发布您尝试过的内容。
  • 这似乎会变得非常棘手。如果你有一个名为“圣诞礼物”的组,“礼物”这个词看起来像一个关系词。解析这样的东西需要智能。
  • 我并不真正担心代码错误,因为我真的需要知道如何去做。问题本质上是当 Artists 和 ArtistRelation 需要从我插入到标题中更新时,我如何将我拥有的数据插入到我的表中(如果应用了此方法)。 @Barmar
  • 嗯...回到绘图板上获取我的正则表达式代码...哈哈感谢@Barmar 的这一点

标签: php mysql sql database


【解决方案1】:

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

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

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

在每次插入后,您希望获取最后插入的 ID(PDO 和 mysqli_ 对此有方法),然后将该 ID 和艺术家姓名存储在一个数组中,以便以后可以使用该 ID。

然后插入标题信息。

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

这有帮助吗?

【讨论】:

  • 这是一个很大的帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多