>

올바른 쿼리를 작성하는 데 문제가 있습니다. 누군가 더 똑똑하다면 감사하겠습니다.) 그러면 저를 도울 수 있습니다.

쉽게 느껴지지만 뭔가 빠진 것 같습니다 ....

따라서 2 개의 테이블이 있습니다;

CarColors  그리고 CarColorTranslations .

현지 적으로 나는 CarColors 에 대한이  (부모는 CarDetail 입니다 )

현재이 표에는 그것이 속한 국가 로캘이 있습니다. 빨간색 상자와 같이 : (Id 5005 및 8006)은 cardetail 1과 관련이 있으며 다른 이름 만 사용합니다 (물론 다른 언어)

그러나 이것은 올바른 모델이 아닙니다. CountryLocaleId 를 제거해야합니다  그리고 Name  이것을 CarColorTranslations 테이블에 넣으십시오.

먼저 이렇게 썼습니다 :

Insert into CarColorTranslations (Created, CreatedBy, Changed, ChangedBy, CarDetailId, CarColorId, CountryLocaleId, Name)
  select GETDATE(),'migrations', GETDATE(), 'migrations', cc.CarDetailId, cc.Id, cc.CountryLocaleId, Name from CarColors cc

이 행을 다른 테이블에 씁니다. 그러나 나는 한 가지를 잊었다. 데이터를 carcolor로 통합해야합니다. 의미;Id 5005와 8006은 하나 여야합니다. 그래서 8006 (또는 다른 것)을 제거해야합니다. 그러나이 시점에서 CarColorTranslations의 한 레코드에서 부모를 잃게됩니다 ..

CarColorTranslations에는 몇 가지 속성이 있습니다

CarDetailId (FK cardetail)
CarColorId (FK CarColor)
CountryLocaleId (FK countryLocale)
Name (Real translated value)

데이터를 통합하고 쿼리를 CarColortranslations 에 쓰는

;일치하는 키는 CarDetailId 입니다. HexColorCode ColorCombinationId Price

보시다시피;다음 레코드 (9005)는 다른 자동차와 동일한 색상이며 다른 자동차와 일치하지 않아야합니다.

분명히 바랍니다.

Thnx!

  • 답변 # 1

    먼저 CarColorTranslations에는 CarDetailId 열이 필요하지 않다고 생각합니다. CarColorTranslations는 이미 CarColors의 상위 항목에서 사용할 수 있기 때문입니다.

    INSERT의 경우 다음과 같은 것이 여러분이 찾고있는 것이라고 생각합니다.

    Insert into CarColorTranslations
    (
        Created
        , CreatedBy
        , Changed
        , ChangedBy
        , CarDetailId
        , CarColorId
        , CountryLocaleId
        , Name
    )
    select
        GETDATE()
        ,'migrations'
        , GETDATE()
        , 'migrations'
        , cc.CarDetailId
        , MIN(cc.Id) OVER (PARTITION BY CarDetailId, HexColorCode, ColorCombinationId, Price)
        , cc.CountryLocaleId
        , Name
    from CarColors cc
    
    

    이제 더 이상 사용하지 않는 CarColors 레코드를 삭제하기 위해 CarColorId에서 LEFT JOIN과 같은 작업을 수행 할 수 있습니다.

  • 이전 c# - Windows 양식, 개체가 다른 항목 앞에 나타 납니까?
  • 다음 regex - Java에서 유효한 문자를 확인하기위한 정규식