0

我有一个包含基本值列表和语言值列表的查询。每个值都有一个与之匹配的键。基本值存储在一个表中,语言值存储在另一个表中。我的问题是我需要从 QUERY 中删除所有匹配的基值,除了一个。然后,我将该查询导出到 Excel 电子表格(我可以很好地完成这部分)并允许用户编辑语言值。

当用户编辑和/或插入新的语言值时,我需要更新数据库,除非现在覆盖数据库中的任何匹配值(比如那些第一次被删除的值)。

简而言之,客户支付翻译费用,如果我可以生成需要较少翻译的工作表(例如经常重复出现的短语),那么他们可以节省资金,因此可以开始项目。我意识到它的缺点是它不是一个真正的链表,其中所有匹配的值都属于语言表中的一行(这很容易)。相反,有多个相同的值需要如上所述更新。


是的,我对此感到困惑,这就是为什么它看起来有点模糊。这是一个示例:

Table 1
Item Description1
Item Description2
Item Description3
Item Description2
Item Description2
Item Description4
Item Description5
Item Description6
Item Description3

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3  (blank)
Item Desc in other Language3
Item Desc in other Language4
Item Desc in other Language5
*blank*

期望的结果(查询时)

表1 项目描述1 项目描述2 项目描述3 项目描述4 项目描述5 项目描述6

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3 (filled by matching row in Table 2)
Item Desc in other Language4
Item Desc in other Language5
Item Desc in other Language6 (blank, returned as empty string)

用户进行修改,包括将数据插入空白行(如语言的第 6 行),然后重新上传:

Table 1
Item Description1
Item Description2
Item Description3
Item Description2
Item Description2
Item Description4
Item Description5
Item Description6
Item Description3

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3  (now matches row below)
Item Desc in other Language3
Item Desc in other Language4
Item Desc in other Language5
Item Desc in other Language6  (new value entered by user)

还有一个资源键将每个“项目描述”与单个“其他语言的项目描述”匹配。他们唯一一次见面是在这个翻译过程中,所有其他时间的值可能不同,所以资源键不能简单地永久更改为一个翻译的所有点。

我还应该补充一点,不应该改变表格的结构或删除表格的行。


好的,这是对我希望查询执行的操作的更新修订,但显然不这样做,因为我实际上需要连接表的值:

SELECT pe.prodtree_element_name_l, rs.resource_value, pe.prodtree_element_name_l_rk   
FROM prodtree_element pe
        LEFT JOIN resource_shortstrings rs
            ON pe.prodtree_element_name_l_rk = rs.resource_key
        WHERE rs.language_id = '5'
            AND pe.prodtree_element_name_l <> ''
        GROUP BY pe.prodtree_element_name_l
4

3 回答 3

1

Hrm,仍然不清楚真正的问题是什么,但让我试一试。

表:

BASE_VALUES
------------------
BASE_VALUE_RK
BASE_VALUE_NAME

RESOURCE_VALUES(这些是翻译,我猜)
----------------------
RESOURCE_KEY
RESOURCE_LANGUAGE_ID
RESOURCE_VALUE

您想检索一个基值,以及与该基值匹配的所有相应翻译值,将它们导出到 excel,然后通过更新重新加载它们(我认为)。

SQL 来选择数据:

选择 bv.BASE_VALUE_RK、rv.RESOURVE_VALUE
  FROM BASE_VALUE bv,RESOURCE_VALUE rv
 WHERE bv.BASE_VALUE_RK = rv.RESOURCE_KEY
   AND rv.resource_language_id = '5'
 按 1 排序;

这会给你:

第1234章
1235酒吧
第1236章

将其导出到 excel,并通过更新取回:

第1234章 咕
1235车
第1236章

然后你可以说:

更新 RESOURCE_VALUES
   SET RESOURCE_VALUE = value_from_spreadsheet
 WHERE RESOURCE_KEY = key_from_spreadsheet

我可能对这个人有点偏离,所以请告诉我,如果你能提供更多细节,我可能会更接近分数。

干杯!

于 2008-10-15T20:26:35.930 回答
0

如果您需要删除除一个之外的所有匹配项,为什么不删除所有匹配项……匹配项……我们需要更好的术语……然后插入正确的项。EG,如果您需要更新碱基对表中第 12 项和第 13 项之间的匹配,请执行以下操作

delete from matchtable where (id1 = 12 and id2 = 13) or (id1 = 13 and id2 = 13);
insert into matchtable (id1, id2) values (12, 13);

我可能过于简单化了,但是您的描述在某些地方似乎含糊不清。

于 2008-10-15T18:09:30.590 回答
0

嘿,感谢您的更新!

看着它并将其添加到以前的帖子中,我终于想出了这个:

<cfquery name="getRows" datasource="XXXX">
    SELECT pe.prodtree_element_name_l, MAX(rs.resource_value) AS resource_value
    FROM prodtree_element pe
    LEFT JOIN resource_shortstrings rs
        ON pe.prodtree_element_name_l_rk = rs.resource_key
    WHERE rs.language_id = '5'
        AND pe.prodtree_element_name_l <> ''
    GROUP BY prodtree_element_name_l
</cfquery>

我意识到我不需要特定的 resource_value,只需要其中的任何东西。我还意识到在查询之外我根本不需要资源键。无论如何,更新都会更新所有匹配的基值,所以我根本不需要资源键,这让我可以使用 GROUP BY。

花了一段时间,抱歉解释不佳,但就是这样!:) 感谢所有的帮助。

于 2008-10-15T20:59:03.773 回答