我有一个的查询,有一个名单的基础的价值观和一个列表中的语言的价值观。每个值都有一个键匹配。基值储存在一个表中,语言的价值在另一个。我的问题是,我需要得到所有匹配的基本价值观从中删除的查询,除了一个。然后,我出口,查询到的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 项目Description1 项目Description2 项目Description3 项目Description4 项目Description5 项目Description6

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行为的语言),那么reuploads:

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)

还有一个资源的关键相匹配的每一个"项目简介"的一个"项目Desc在其它语言"。他们唯一的一次都没有去见彼此是在这个翻译过程中,所有其他时间的价值可能是不同的,所以资源键不能简单地被改变为各点在一个翻译永久的。

我还要补充,应该没有改变结构的表格或排除的表格。


好了,这里是一个更新的revisal什么我会喜欢的查询做到的,但明显地不这样做,因为我确实需要的价值观的加入表:

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
有帮助吗?

解决方案 3

嘿谢谢你的更新!

看着它并将其添加到上一篇文章中我终于想出了这个:

<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。

花了一段时间,对不起的解释感到抱歉,但就是这样! :)感谢您的帮助。

其他提示

人力资源管理,仍然没有实清楚是什么问题真是,但是让我来给它一个去。

表:

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

RESOURCE_VALUES (these are the translations, I'm guessing)
-----------------------
RESOURCE_KEY
RESOURCE_LANGUAGE_ID
RESOURCE_VALUE

你想检索一个基本价值,并有相应的翻译值相匹配的基础的价值,出口他们,然后再载他们通过更新(我认为)。

SQL挑选出的数据:

SELECT 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'
 ORDER BY 1;

这会给你:

1234    Foo
1235    Bar
1236    Baz

出口到excel,并把它带回更新:

1234    Goo
1235    Car
1236    Spaz

然后你可以说:

UPDATE RESOURCE_VALUES
   SET RESOURCE_VALUE = value_from_spreadsheet
 WHERE RESOURCE_KEY = key_from_spreadsheet

我可的方式基础上这家伙,所以让我知道而且,如果可以提供更详细一点,我可以能够取得更接近的标记。

干杯!

如果您需要删除除一个之外的所有匹配项,为什么不删除所有匹配的...匹配...我们需要更好的术语...然后插入正确的匹配项。 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);

我可能过于简单了,但你的描述似乎含糊不清。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top