【发布时间】:2014-06-17 09:53:12
【问题描述】:
当我规范化我的数据库时,我使用一个文本值将条目组合在一起,为它们提供相同的外键。但是,在规范化之前,我还有两个其他字段,它们使用参考号将条目组合在一起,一个是成对的条目,一个是成组的条目。由于这些分组条目不一定具有相同的文本值,因此某些条目将被排除在分组之外(共享外键 id)。
我需要一个查询来选择共享 PairRef 或 GroupRef 的所有条目,其中该组中的条目并不都具有相同的 ForeignKeyID。
例子:
ID PairRef GroupRef ForeignKeyID TextValue (in linked table2)
1 25 25 123 'Text value 123'
2 25 25 255 'Text value 255'
3 1 50 201 'Text value 201'
4 1 50 201 'Text value 201'
5 2 50 202 'Text value 202'
6 2 50 202 'Text value 202'
7 3 50 203 'Text value 203'
8 3 50 203 'Text value 203'
然后我需要能够编辑数据以将它们组合在一起。问题是,为了做到这一点,我需要查询来自多个表,因为我需要查看与外键关联的文本。我发现使用 phpMyAdmin,虽然我可以使用内部连接从多个表中创建查询,但这些查询的结果无法像从一张表中查询那样进行编辑。
我想另一种方法是对查询结果进行更新查询。您能否举例说明一种快速简便的方法来对查询结果进行更新查询,而不会丢失需要重复使用的原始查询。
在上面的示例中,对于共享相同 PairRef 的 ID 1 和 ID 2 的重组,我需要实际查看 TextValue 123 和 255,并根据哪个是更合适的文本标签,我会决定哪个进入改变。假设“文本值 123”是我想为该分组保留的值。我会将 ID 2 更新为 ForeignKeyID 123,这显然会自动将该条目的 TextValue 更改为“文本值 123”。
对于共享相同 GroupRef 的 ID 3 到 8 的重新组合,如果我在查看数据后决定将它们全部重新组合为“文本值 201”,我将更改 ID 5、6、7 和 8到 ForeignKeyID = 201,这将自动将这些条目的所有 TextValues 更改为“Text Value 201”。
ID 1 到 8 将不再出现在查询结果中,因为分组问题已经解决并且它们不再符合查询条件。
我需要找到最简单的方法来做到这一点,因为将条目分组在一起是数据库的主要目的之一,并且有很多这样的编辑工作要做。
谢谢
【问题讨论】:
-
这是一个用于创建和填充上表的 SQLFiddle,如果它对其他人有任何帮助:sqlfiddle.com/#!2/ec9b2。遗憾的是我不明白这个问题,所以不能提供更多帮助。
标签: sql phpmyadmin