我有两个表-一个包含库存记录,另一个包含翻译(针对法语和德语用户)。
股票:
╔════╦═══════╦═══════════════════╦═══════════════════════════╗
║ 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查询来获取每个股票项目的价格和翻译名称?我一次只需要一种语言。
如果只有一列需要翻译,我可以只使用INNER JOIN。问题是,有两列需要翻译-一列用于项目名称,另一列用于项目类别名称。
即所需输出(法语)
╔════╦═══════╦══════════╦══════════════╗
║ ID ║ PRICE ║ ITEM ║ ITEMCATEGORY ║
╠════╬═══════╬══════════╬══════════════╣
║ 1 ║ 10 ║ cuillère ║ couverts ║
║ 2 ║ 31 ║ table ║ meubles ║
╚════╩═══════╩══════════╩══════════════╝发布于 2013-01-10 23:52:02
在表Stock上连接两次表Translations,以便获得表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-10 23:51:25
使用这种表结构,您将需要两次JOIN到Translations表...一次获取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-02-14 17:31:24
您可以使用以下查询:
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 ahttps://stackoverflow.com/questions/14261743
复制相似问题