문제

기본 값 목록과 언어 값 목록이있는 쿼리가 있습니다. 각 값에는 다른 값과 일치하는 키가 있습니다. 기본 값은 한 테이블에 저장되고 언어 값은 다른 표에 저장됩니다. 내 문제는 쿼리를 제외한 모든 일치하는 기본 값을 제거해야한다는 것입니다. 그런 다음 해당 쿼리를 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)

각 "항목 설명"을 단일 "다른 언어의 항목 desc"에 맞추는 리소스 키도 있습니다. 그들이 서로를 볼 수있는 유일한 시간은이 번역 과정에서 값이 다를 수 있으므로 리소스 키가 한 번역에서 영구적으로 모든 지점으로 변경 될 수는 없습니다.

또한 테이블의 구조를 변경하거나 테이블의 행을 제거하지 않아야합니다.


좋아, 여기에 쿼리가 원하는 일에 대한 업데이트 된 재 방문이 있지만 실제로 결합 된 테이블의 값이 필요하기 때문에 분명히하지 않습니다.

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가 필요하지 않다는 것을 깨달았습니다. 또한 쿼리 외부에서 전혀 리소스 키가 필요하지 않다는 것을 깨달았습니다. 업데이트는 일치하는 모든 기본 값을 업데이트 할 것이므로 실제로 리소스 키가 필요하지 않아 그룹을 사용할 수있었습니다.

시간이 걸렸습니다. 가난한 설명에 대해 죄송합니다. 그러나 이것이 바로입니다! :) 모든 도움에 감사드립니다.

다른 팁

HRM, 여전히 문제가 무엇인지에 대해서는 아직 명확하지 않지만, 내가 가자.

테이블 :

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

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

하나의 기본 값과 해당 기준 값과 일치하는 해당 변환 값을 검색하여 Excel로 내보낸 다음 업데이트를 통해 다시로드하려고합니다 (생각합니다).

데이터를 선택하려면 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

나는이 사람을 기반으로 할 수 있으므로 알려 주시면 좀 더 자세한 내용을 제공 할 수 있다면 마크에 더 가까이 득점 할 수 있습니다.

건배!

하나를 제외한 모든 경기를 제거 해야하는 경우, 모든 매칭을 삭제하지 않겠습니까 ... 매치 ... 더 나은 용어가 필요합니다 ... 그리고 올바른 용어를 삽입하십시오. 예를 들어, 기본 쌍 테이블에서 항목 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