从同一个表中添加与内部联接结果中的条件匹配的行

时间:2017-01-10 04:57:32

标签: mysql join

我是编程新手。

这是作业.....这也是我的第一篇SO帖子!!

你好世界! :)

我试图使用连接/联合或("其他"方法??)对内部联接查询的结果使用同一个表中的其他行(基于匹配的辅助ID)。

我正在使用输出创建视图。

我有一个成员表作为m

每个成员都表示为具有family_ID

的家庭组的一部分

每个家庭都有一个主要联系人(primaryContact_ID)支付会员费。每个primarycontact_ID的会员付款都在一个成员支付表中作为mp。

我希望选择在某一年内被视为已付款的所有会员。注意:这意味着在家庭主要联系人已经支付的情况下,其他家庭成员因此被视为已付款/当前。

首先,我可以轻松选择付费的主要联系人。使用:

SELECT  m.memberNumber, m.firstName, m.lastName, m.family_ID , mp.yearCurrentTo
FROM member m
INNER JOIN membershippayment mp
on m.primaryContact_ID = mp.primaryContact_ID
WHERE mp.yearCurrentTo = 2015

输出

memberNumber | firstName | lastName | family_ID | yearCurrentTo 
    6        |   ted     |   smith  |    2      |       2015

但是Ted有另外3个家庭成员(也在成员表m中),如family_ID =" 2"

所示

我如何(选择或加入或联合或"其他")m.family_ID为Ted的其他家庭成员?

family_id值将是动态的,并且具有一个或多个值,具体取决于内部联接结果集。

我尝试使用第二个别名将内部联接添加到原始成员表:

 SELECT  m.memberNumber, m.firstName, m.lastName, m.family_ID, mp.yearCurrentTo
FROM member m
INNER JOIN membershippayment mp
on m.primaryContact_ID = mp.primaryContact_ID
INNER JOIN member m2
on m2.family_ID = m.family_ID
WHERE mp.yearCurrentTo = 2015

但我得到的是Teds细节重复了3次。

    memberNumber | firstName | lastName | family_ID | yearCurrentTo 
        6        |   ted     |   smith  |    2      |       2015
        6        |   ted     |   smith  |    2      |       2015
        6        |   ted     |   smith  |    2      |       2015
        6        |   ted     |   smith  |    2      |       2015

它应该是每个额外的家庭成员,具有唯一的memberNumber但匹配的family_ID

我也试过了一个联盟但得到了类似的重复行。

从这里开始,我很难过。

这一切都可以在同一个查询中实现吗?我正在考虑使用嵌套。但是我试图迷失了。

或者我应该使用可更新的视图并执行单独的选择和更新查询。

谢谢!

0 个答案:

没有答案