首先是表格名称和布局:
这是我想要的结果:
我猜这是“搞定了”(技巧)..
我只会传递一个(动态的)imis_id/user_id(当前在一张表上不匹配的列名)...
因此需要在关系表上查找(选择)传入的(动态)id.. 以及 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 仅限于非常直接/简单的查询类型。这比我习惯的更先进。
最佳答案
您需要在 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'
关于mysql - 我需要一个 MySQL 子查询吗?我怎样才能得到这些结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45492820/