首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写需要翻译两列的SQL查询?

如何编写需要翻译两列的SQL查询?
EN

Stack Overflow用户
提问于 2013-01-10 23:48:45
回答 3查看 73关注 0票数 1

我有两个表-一个包含库存记录,另一个包含翻译(针对法语和德语用户)。

股票:

代码语言:javascript
复制
╔════╦═══════╦═══════════════════╦═══════════════════════════╗
║ ID ║ PRICE ║ ITEMTRANSLATIONID ║ ITEMCATEGORYTRANSLATIONID ║
╠════╬═══════╬═══════════════════╬═══════════════════════════╣
║  1 ║    10 ║               423 ║                      1323 ║
║  2 ║    31 ║              1776 ║                      1953 ║
╚════╩═══════╩═══════════════════╩═══════════════════════════╝

翻译:

代码语言:javascript
复制
╔══════╦═══════════╦════════════╦═════════╗
║  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。问题是,有两列需要翻译-一列用于项目名称,另一列用于项目类别名称。

即所需输出(法语)

代码语言:javascript
复制
╔════╦═══════╦══════════╦══════════════╗
║ ID ║ PRICE ║   ITEM   ║ ITEMCATEGORY ║
╠════╬═══════╬══════════╬══════════════╣
║  1 ║    10 ║ cuillère ║ couverts     ║
║  2 ║    31 ║ table    ║ meubles      ║
╚════╩═══════╩══════════╩══════════════╝
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-10 23:52:02

在表Stock上连接两次表Translations,以便获得表Stock中每列的值

代码语言:javascript
复制
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

  • SQLFiddle Demo
票数 2
EN

Stack Overflow用户

发布于 2013-01-10 23:51:25

使用这种表结构,您将需要两次JOINTranslations表...一次获取Item,一次获取ItemCategory

代码语言:javascript
复制
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 
票数 1
EN

Stack Overflow用户

发布于 2013-02-14 17:31:24

您可以使用以下查询:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14261743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档