2011-07-06 3 views
1

나는 2 개의 테이블이 있습니다 - 하나는 ProductID, [Product Name in English]Price입니다. 다른 표는 ProductID[Product Name in Spanish]입니다.MS SQL : 2 테이블에서 선택하는 방법?

스페인어와 가격의 제품 이름을 제공하는 선택 쿼리가 필요합니다.

어떻게 MS SQL을 사용하여이 작업을 수행합니까?

데이터베이스 디자인면에서 모든 것을 하나의 테이블에 넣고 선택 쿼리를 단순하게 만들 수 있습니까? ProductID, NameEnglish, NameSpanish, Price 등이있다.

+1

아니요, 같은 테이블에 결합하지 마십시오. 당신이 다른 언어로 설명이나 다른 물건을 원할 때, 어쩌면 스페인어 이외의 다른 것을 원할 때 어떻게 될까요? 지역별 날짜 형식 및 통화는 어떻게됩니까? 다국어 지원을 원하는 경우 로케일에 대한 데이터베이스 설계를 확인하십시오. – Nikki9696

답변

6
SELECT t2.[Product Name in Spanish], t1.Price 
    FROM table1 t1 -- The English version 
     INNER JOIN table2 t2 -- The Spanish version 
      ON t1.ProductID = t2.ProductID 

향후 디자인에 대해 생각해보십시오. 프랑스어와 같은 다른 언어로 이름을 저장하고 싶습니까? 궁극적으로 제품 및 언어를 연결하는 상호 참조 테이블 및 언어 테이블을 도입 할 수 있습니다. 뭔가 같이 :

enter image description here

+0

이 설정을 사용하면 "EnglishName"필드가 영어 ID의 필드 번역에 포함되므로 필드가 필요 없습니다. 그러나 그것은 올바른 해결책입니다. 테이블을 선택 목적으로 1 개의 테이블처럼 보이게 만드는 뷰를 만들 수도 있습니다. –

+0

@ t-clausen.dk : 약간의 비정규 화가 있지만 필자는 테이블의 행에 의미를 부여하기 위해 영어로 (또는 모국어가 무엇이든간에) 설명을 제품과 함께 유지하려고합니다. –

1

그들에게 최고의 솔루션이 될 것 결합하지만,이 문제를 해결할 가입하여.

1

당신은 가입 연산자를 사용할 수 있습니다

SELECT 
    tab2.[Product name in Spanish], 
    tab1.Price 
FROM 
    table1 tab1 
INNER JOIN 
    table2 tab2 on tab2.ProductID=tab1.ProductID 
1

당신은 가입 내부로이 작업을 수행 할 수 있습니다,하지만 난 개인적으로 그들을 결합 것, 어떤 이유로 두 개의 별도의 테이블을 가지고 볼 수 없습니다.

1
SELECT SP.ProductName, PRODUCT.Price from PRODUCT as PRODUCT 
    JOIN SPANISHPRODUCTS as SP ON PRODUCT.ProductID = SP.ProductID 
관련 문제