sql - 如何在 SQLite 中的特定条件下进行 SQL 查询,将一个表的结果行与另一表的行组合起来

标签 sql database sqlite

我有一个包含三个表的SQLite3数据库。示例数据如下所示:

原创

id    aName  code 
------------------
1     dog     DG  
2     cat     CT  
3     bat     BT  
4     badger  BDGR
...   ...     ... 

已翻译

id   orgID   isTranslated  langID   aName     
----------------------------------------------
1     2           1         3       katze     
2     1           1         3       hund      
3     3           0         3       (NULL)    
4     4           1         3       dachs     
...   ...         ...       ...     ...        

id Langcode
-----------
1    FR  
2    CZ
3    DE
4    RU
...  ...

我想从原始翻译中选择所有数据,结果将包含原始表中的所有数据,但是aName 将替换为 Translated 表中的 aName,这样我就可以应用 ORDER BY 子句并以所需的方式对数据进行排序.

所有数据和表格设计都是示例,只是为了说明问题。该架构确实包含一些元素,例如 isTranslated 列或单独表中的翻译和原始名称。应用程序目标/设计需要这些元素。

更具体地说,这是我想要生成的示例行集。如果翻译可用于原始中的特定id,则它是表原始中的所有数据,并由已翻译中的数据修改.

期望的结果

id    aName  code    isTranslated
---------------------------------  
1     hund     DG         1
2     katze    CT         1
3     bat      BT         0
4     dachs    BDGR       1
...   ...      ...        ...

最佳答案

这是 CASE expression 的典型应用程序:

SELECT Original.id,
       CASE isTranslated
         WHEN 1 THEN Translated.aName
         ELSE        Original.aName
       END AS aName,
       code,
       isTranslated
FROM Original
JOIN Translated ON Original.id = Translated.orgID
WHERE Translated.langID = (SELECT id FROM Lang WHERE Langcode = 'DE')

如果 Original 中并非所有记录在 Translated 中都有对应的记录,请改用 LEFT JOIN

如果未翻译的名称保证为NULL,则可以只使用 IFNULL(Translated.aName, Original.aName)相反。

关于sql - 如何在 SQLite 中的特定条件下进行 SQL 查询,将一个表的结果行与另一表的行组合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12612482/

相关文章:

php - 从 Woocommerce 订单/WC_Order 对象获取订单备注?

sql - 连接到 "srvrname"上的集成服务失败 : "The specified service does not exist as an installed service."

php - MySQL - AUTO_INCRMENT,表的自定义增量开始和值

MySQL - 按字母顺序排列所有数据,但将特定项目放在最后

sql - 在 codeigniter 中为实时站点配置数据库配置不断收到 500 内部服务器错误

使用 phpmyAdmin 的数据库关系(复合键)

sql - Moodle:用于列出所有用户的 SQL(带有自定义用户配置文件字段)

html - 更改我的 HTML/CSS 输出中的日期格式

ruby-on-rails - RoR 脚手架错误, 'undefined method to_datetime for 0:Fixnum'

sqlite - Sencha Touch 2 - Ext.device.SQLite.Database 工作?