1

2つのテーブルがあります。1つは在庫の記録、もう1つは翻訳(フランス語とドイツ語のユーザー向け)です。

株式:

╔════╦═══════╦═══════════════════╦═══════════════════════════╗
║ ID ║ PRICE ║ ITEMTRANSLATIONID ║ ITEMCATEGORYTRANSLATIONID ║
╠════╬═══════╬═══════════════════╬═══════════════════════════╣
║  1 ║    10 ║               423 ║                      1323 ║
║  2 ║    31 ║              1776 ║                      1953 ║
╚════╩═══════╩═══════════════════╩═══════════════════════════╝

翻訳:

╔══════╦═══════════╦════════════╦═════════╗
║  ID  ║  ENGLISH  ║   FRENCH   ║ GERMAN  ║
╠══════╬═══════════╬════════════╬═════════╣
║    1 ║ knife     ║ couteau    ║ messer  ║
║    2 ║ fork      ║ fourchette ║ gabel   ║
║  423 ║ spoon     ║ cuillère   ║ löffel  ║
║ 1323 ║ cultery   ║ couverts   ║ besteck ║
║ 1776 ║ table     ║ table      ║ tabelle ║
║ 1953 ║ furniture ║ meubles    ║ möbel   ║
╚══════╩═══════════╩════════════╩═════════╝

各在庫アイテムの価格と翻訳された名前を取得するSQLクエリを作成する方法はありますか?一度に必要な言語は1つだけです。

翻訳が必要な列が1つだけの場合は、を使用できますINNER JOIN。問題は、翻訳が必要な2つの列があります。1つはアイテム名用で、もう1つはアイテムカテゴリ名用です。

すなわち必要な出力(フランス語)

╔════╦═══════╦══════════╦══════════════╗
║ ID ║ PRICE ║   ITEM   ║ ITEMCATEGORY ║
╠════╬═══════╬══════════╬══════════════╣
║  1 ║    10 ║ cuillère ║ couverts     ║
║  2 ║    31 ║ table    ║ meubles      ║
╚════╩═══════╩══════════╩══════════════╝
4

3 に答える 3

2

Translationsテーブルでテーブルを2回結合しStockて、テーブルの各列の値を取得できるようにしますStock

SELECT  a.ID, a.Price, b.French AS Item, c.French AS ItemCategory  
FROM    Stock a
        INNER JOIN Translations b
            ON a.ItemTranslationId = b.ID
        INNER JOIN Translations c
            ON a.ItemCategoryTranslationId = c.ID
于 2013-01-10T15:52:01.663 に答える
1

このテーブル構造ではJOINTranslationsテーブルに 2 回アクセスする必要があります... を取得するために 1 回、 を取得ItemするためにItemCategory:

SELECT
    s.ID,
    s.Price,
    i.French AS Item,
    ic.French AS ItemCategory
FROM
    Stock s
    JOIN Translations i ON i.ID = s.ItemTranslationId
    JOIN Translations ic ON ic.ID = s.ItemCategoryTranslationId 
于 2013-01-10T15:51:24.737 に答える
0

次のクエリを使用できます。

SELECT  a.ID, a.Price,
(select French from  Translations b where b.ID=a.ItemTranslationId) as ITEM,
(select French from  Translations c where c.ID=a.ItemCategoryTranslationId) as ITEMCATEGORY
FROM Stock a
于 2013-02-14T09:31:24.133 に答える