2015-12-14 50 views
-1

有3个SQl服务器表: 1.表帐户 - 所有类型的帐户和属性 - 行 - A = 123 B = 456 C = 789〜3个每个客户帐户,可以有多个B和CS为一个客户加入表以从表#2中获取表1中的每个相关/多行的SQL服务器中的ID

  • 表FlattenedHierarchy - 对于每个账户类型的一列(A,B ,C)详细列出关系 - 列A = 123 B = 456 C = 789

  • 表订阅 - 订阅和属性只有一种类型的帐户,即C

  • 我想要获取所有属于客户的账户类型= B的列表,并且相应的Cs具有活动的订阅。和B的名单也应该有相应的A公司,上市为同一客户可以有两个B的,但两个B行应弹出相同A.

    Sample Tables and expected sample

    我如何实现这一目标?

    回答

    0

    如果我理解正确的话,这应该工作:

    SELECT * FROM Account t1 
        LEFT JOIN `FlattenedHierarchy` t2 ON t1.AcctId=t2.B 
        LEFT JOIN `Subscriptions` t3 ON t2.C=t3.Acct 
        WHERE t1.AcctType='B' AND STR_TO_DATE(t3.`End Date`,'%c/%d/%Y') < CURDATE() 
        AND t3.Acct IS NOT NULL 
    
    +0

    非常感谢你,我曾试图加入左侧的不同组合,但没有工作的某些原因。再次感谢。 – humility

    相关问题