別のフィールドの値に基づいて、別のテーブルの値をフィールドに割り当てます

口座番号、カード番号、CardNameType、カード所有者名の4つの列を持つテーブルがあります。 CardNameTypeフィールドは、カードの所有者を識別します。値が0の場合は、FATHERテーブルから名前を取得します。 1の場合は、MOTHERテーブルから取得します。 2の場合は、CHILDテーブルから取得します。各テーブルにはAccount#の主キーがあり、各Account#には複数のCard#があります。

これをどうやってやることができますか? CASE声明が働くのでしょうか、それとも最適な方法がこれについてどうなるでしょうか?

編集:申し訳ありませんが、私はデータを誤解しました。あなたが私に与えた解決策は、私はうまくいくとは思わない。 FATHERとMOTHERの名前は同じテーブルに表示されます。たとえば、父親または母親がカードを持っている場合、テーブルに2つのレコードが表示されます(父親用と母親用)。ただし、カードが児童用であれば、それは別のテーブルにあります。私は母親や父親や子供だけを取り出すことができるようにする方法が必要です。

0

1 答え

ここのケースステートメントが利用するのが最善のように聞こえます。

といった:

SELECT CASE c.CardNameType
            WHEN 0 THEN f.Name
            WHEN 1 THEN m.Name
            WHEN 2 THEN c.Name
       END AS [Card Owner]
FROM
    Card c
INNER JOIN
    Father f ON f.Account# = c.Account#
.
.
.
2
追加された
@thevanillathrillaので、このすべての助けをしました???
追加された 著者 Laurence Burke,