首先,表名和布局:

以下是我想要的结果:

这就是我猜的“得到你”(技巧)..
我将只传递一个(动态) imis_id/user_id (列名称目前在一个表上不匹配)...
因此,对于传入的(动态)id,需要在关系表上进行查找(select)。其中current_org = 1。
这将获取/给出我需要在其中获取所有用户信息(与org_id关联的)的目标org_id。以及所有组织的详细信息。
这里有一个弱/失败的尝试:(它使用了一个硬编码的org_id),它是无效的。我只需要传入user_id/imis_id。其中current_org =1以获取目标org_id。
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行)。但是使用了正确的标准:
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仅限于非常直接/简单的查询类型。这比我以前更高级了。
发布于 2017-08-04 03:41:14
您需要在org_id上将genealogy_relations表与自身连接起来
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'发布于 2017-08-04 03:26:00
从查询中删除genealogy_relations.user_id = '00003',它就可以工作了
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';https://stackoverflow.com/questions/45492820
复制相似问题