23
CREATE TABLE subscription (
   magazine_id bigint,
   user_id     bigint,
   PRIMARY KEY (magazine_id, user_id)
);

CREATE TABLE delivery (
   magazine_id bigint,
   user_id     bigint,
   FOREIGN KEY (subscription) REFERENCES subscription (magazine_id, user_id)
);

特定のサブスクリプションを指定して配信をクエリする良い方法は何ですか? PRIMARY KEY (magazine_id, user_id)次のようにクエリできるように、列名と対応する外部キーを割り当てる方法はありますか:

SELECT *
FROM subscription
JOIN delivery ON (delivery.subscription_fk = delivery.subscription_pk);

注:次のように書くことができます:

SELECT *
FROM subscription
JOIN delivery ON (delivery.magazine_id = subscription.magazine_id
              AND delivery.user_id = subscription.user_id);

ただし、これを達成するためのより冗長な方法があるという印象を受けています。

4

2 に答える 2

1

delivery外部キーを表す 2 つの列がありませんか? 次に、非複合主キーのように機能するはずSELECT * FROM subscription JOIN delivery ON (delivery.magazine_id = subscription.magazine_id AND delivery.user_id = subscription.user_id)です。

于 2014-02-15T00:57:58.663 に答える