首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否需要一个MySQL子查询?我怎样才能得到这些结果?

我是否需要一个MySQL子查询?我怎样才能得到这些结果?
EN

Stack Overflow用户
提问于 2017-08-04 03:18:17
回答 2查看 48关注 0票数 1

首先,表名和布局:

以下是我想要的结果:

这就是我猜的“得到你”(技巧)..

我将只传递一个(动态) imis_id/user_id (列名称目前在一个表上不匹配)...

因此,对于传入的(动态)id,需要在关系表上进行查找(select)。其中current_org = 1。

这将获取/给出我需要在其中获取所有用户信息(与org_id关联的)的目标org_id。以及所有组织的详细信息。

这里有一个弱/失败的尝试:(它使用了一个硬编码的org_id),它是无效的。我只需要传入user_id/imis_id。其中current_org =1以获取目标org_id。

代码语言:javascript
复制
SELECT genealogy_orgs.org_id, genealogy_orgs.org_name, 
genealogy_relations.user_id, genealogy_relations.relation_type, genealogy_relations.start_year, genealogy_relations.end_year, 
genealogy_users.imis_id, genealogy_users.full_name 
FROM genealogy_orgs 
INNER JOIN genealogy_relations ON genealogy_orgs.org_id = genealogy_relations.org_id 
INNER JOIN genealogy_users ON genealogy_relations.user_id = genealogy_users.imis_id 
WHERE genealogy_orgs.org_id = '84864';

下面是另一个失败的尝试(它只返回1行)。但是使用了正确的标准:

代码语言:javascript
复制
SELECT 
genealogy_relations.org_id, 
genealogy_relations.user_id, genealogy_relations.relation_type, genealogy_relations.start_year, genealogy_relations.end_year, 
genealogy_users.imis_id, genealogy_users.full_name,
genealogy_orgs.org_name
FROM genealogy_relations
INNER JOIN genealogy_orgs ON genealogy_relations.org_id  = genealogy_orgs.org_id
INNER JOIN genealogy_users ON genealogy_relations.user_id = genealogy_users.imis_id 
WHERE genealogy_relations.user_id = '00003' AND genealogy_relations.current_org = '1';

在这一点上,我甚至不确定我需要搜索什么?这就是“子查询/子选择”发挥作用的地方吗?

我的MySQL-fu仅限于非常直接/简单的查询类型。这比我以前更高级了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-04 03:41:14

您需要在org_id上将genealogy_relations表与自身连接起来

代码语言:javascript
复制
SELECT o.*, u.*
FROM genealogy_relations r1
JOIN genealogy_relations r2 ON r2.org_id = r1.org_id
JOIN genealogy_orgs o       ON o.org_id  = r2.org_id
JOIN genealogy_users u      ON u.imis_id = r2.user_id
WHERE r1.user_id = '00003'
  AND r1.current_org = '1'
票数 1
EN

Stack Overflow用户

发布于 2017-08-04 03:26:00

从查询中删除genealogy_relations.user_id = '00003',它就可以工作了

代码语言:javascript
复制
SELECT 
genealogy_relations.org_id, 
genealogy_relations.user_id, genealogy_relations.relation_type, genealogy_relations.start_year, genealogy_relations.end_year, 
genealogy_users.imis_id, genealogy_users.full_name,
genealogy_orgs.org_name
FROM genealogy_relations
INNER JOIN genealogy_orgs ON genealogy_relations.org_id  = genealogy_orgs.org_id
INNER JOIN genealogy_users ON genealogy_relations.user_id = genealogy_users.imis_id 
WHERE genealogy_relations.current_org = '1';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45492820

复制
相关文章

相似问题

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