外键引用Compte(id)或sousCompte(id)或Rubrique(id)等

时间:2016-11-04 12:38:01

标签: sql sql-server

提前抱歉,我很难将问题变成真实的话。我想我可能从根本上误解了外键是如何工作的。 这是我的桌子:

  • - > compte:idC,desci,debit,credit

  • - > sousCompte:idSc,idC,descri,debit,credit --idc是来自table compte的外键

  • - > rubrique:idR,idSc,descri,debit,credit - idSc是表sousCompte中的外键。
  • - > Mouvement:id,idCompte,借方贷方 - idcompte是外键引用Compte或sousCompte或Rubrique

那么如何将idCompte指向几个表中的外键引用,就像示例abouve一样。

1 个答案:

答案 0 :(得分:0)

你需要将你的运动内部加入到你想要比较的所有表中,并留下1的标记。在外部查询中,汇总由MouvementID分组的所有标记。

SELECT
    MouvementId=Mouvement.id,
    ReferencesCompte=MAX(compteFlag),
    ReferencesSousCompte=MAX(sousCompteFlag),
    RefrencesRubrique=MAX(rubriqueFlag)
FROM
(
    SELECT
        Mouvement.id,
        compteFlag=CASE WHEN NOT C.idC IS NULL THEN 1 ELSE 0 END,
        sousCompteFlag=CASE WHEN NOT SC.idSC IS NULL THEN 1 ELSE 0 END,
        rubriqueFlag=CASE WHEN NOT R.idR IS NULL THEN 1 ELSE 0 END,
    FROM
        Mouvement M
        LEFT OUTER JOIN compte C ON C.idC=M.idCompte
        LEFT OUTER JOIN sousCompte SC ON SC.idC=M.idCompte
        LEFT OUTER JOIN rubrique R ON R.idR=M.idCompte
)AS DATA
GROUP BY
    Mouvement.id