2011-07-06 15 views
1

私は2つのテーブルを持っています - 1つはProductID,[Product Name in English]およびPriceです。他の表はProductID[Product Name in Spanish]です。MS SQL:2つのテーブルから選択するには?

私はスペイン語と価格で商品名を教えてくれます。

MS SQLを使用してこれを行うにはどうすればよいですか?

データベース設計上、すべてを1つのテーブルに入れて、選択クエリを簡単にすることはできますか?例えば、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

彼らは最高の解決策になる組み合わせが、あなたの問題を解決しますJOINを使用しました。

1

あなたは、JOIN演算子を使用できます:あなたは、内側でこれを行うことができ

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 
関連する問題