使用JOIN实现两个单独查询的结果


Achieve the results of two individual queries using a JOIN

我有一个USER表结构,如下所示:

id  parent_id      userName
10     01        Project manager
11     10        manager
12     11        teamlead
13     12        team member

如果我在where子句中给团队成员ID,我需要找到项目经理ID。我可以得到每个单独查询的结果。

但是我正在尝试用JOIN查询来实现它。我是JOIN查询的新手。我该怎么做?

看起来这不仅仅涉及一个简单的联接。准备好进入痛苦的世界:)。我最近遇到了一个类似的问题,但类型层次结构存储在具有类似结构的表中。最后我写了一个递归查询。在SqlServer中,您将使用一个通用表表达式。在mysql中,您将使用循环。

基本上,这个想法是将一个表与它本身连接起来,遍历一个层次结构,直到到达顶级元素。在幕后,服务器正在创建虚拟表,并将它们相互连接,直到达到某种"停止条件"。这一点非常重要:确保您的停止条件正确,否则可能会导致一些严重问题。

这篇文章写得很好。此外,在谷歌中搜索术语hierarchical query mysql将获得丰富的信息。

我认为这应该适用于您现有的模式

SELECT ParentUser.UserName AS ManagerName, BaseUser.UserName AS TeamMemberName 
FROM User AS BaseUser
    INNER JOIN User AS ParentUser
        ON  BaseUser.parent_id = ParentUser.id
WHERE BaseUser.Id = @PassedInTeamMemberId

基本上你想做的是:

SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.whatever = 'whatever'

我发现可爱而有才华的杰夫·阿特伍德对加入的视觉解释非常有帮助。