首先,表名和布局:
以下是我想要的结果:
这是'得到你' (技巧)我猜..
我只会传递一个(动态)imis_id / user_id(当前在一个表上不匹配的列名)...
因此,需要在关系表上进行查找(select),传递给(动态)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仅限于非常直接/简单的查询类型。这比以往任何时候都要先进。
答案 0 :(得分:1)
您需要在genealogy_relations
上加入org_id
表:
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 :(得分:0)
从查询中删除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';