mysql - 2 来自同一张表的嵌套查询?
问题描述
所以我有3张桌子
用户表
UserId User
语言表
LanguageId Language Fluency
用户语言表
UserLanguageId UserId LanguageId
基本上我需要的是一个查询,其中 PriLang 是 Fluency='Primary' 而 SecLang 是 Fluency='Secondary' 并且看起来像这样
+------------+-----------------+-----------+
| User | PriLang | SecLang |
+------------+-----------------+-----------+
| Jimbo | English | Spanish |
+------------+-----------------+-----------+
| Norm | French | Spanish |
+------------+-----------------+-----------+
| Kathy | Japanese | Italian |
+------------+-----------------+-----------+
解决方案
在我看来,最直接的方法涉及到 user_languages 表的两个连接,以及每个连接到 langauges 表的连接。
select usr.User, lg1.Language PriLang, lg2.Language SecLang
from users usr
left join user_languages ul1
on ul1.userId = usr.userId
and ul1.Fluency='Primary'
left join user_languages ul2
on ul2.userId = usr.userId
and ul2.Fluency='Secondary'
left join languages lg1
on lg1.languageId = ul1.languageId
left join languages lg2
on lg2.languageId = ul2.languageId
推荐阅读
- ibm-midrange - 如何将 AS400 .mac 宏转换为 PCOMM (vbs) 宏?
- ecmascript-6 - 具有函数和使用“this”的 es6 变量
- javascript - 如何在 React 中将 DialogContentText 内容复制到剪贴板?
- javascript - 对象未推入本地存储阵列
- java - 我想将一些物品发送到第二个活动的回收站视图。我怎么能用房间做到这一点
- angular - 如何测试部署在云上的 Angular SPA
- linux - 通过 ssh 连接使用的脚本不执行命令。如果直接在 ssh 机器上执行,它会执行
- amazon-web-services - EC2 实例的 AWS 服务发现?
- php - 为什么我需要 Docker for Laravel?
- docker - 有人可以解释什么是 Kafka Listener