0

ここに投稿するのはこれが初めてです。次のリレーショナル スキーマを使用して SQL データベースを作成しています


AUTHOR (著者 ID、著者名、著者アドレス)

WEBSITE (Website_ID、Web_Name、Server_Capacity、ISP)

COMIC (Comic_ID, Comic_Name, Comic_Date, Author_ID, Website_ID)

FK Author_ID → AUTHOR (not Null), (not Unique)
               Delete: C, Update: C

FK Website_ID → WEBSITE (not Null), (not Unique)
               Delete: C, Update: C

ISSUE (Issue_ID、Issue_Name、Issue_Date、Comic_ID)

FK Comic_ID → COMIC (not Null), (not Unique)
             Delete: C, Update: C

PRODUCT (Product_ID、Product_Name、Product_Cost、Comic_ID、Vendor_ID)

FK Comic_ID → COMIC (not Null), (not Unique) 削除: C, 更新: C

    FK Vendor_ID → VENDOR (not Null), (not Unique)
                         Delete: C, Update: C

VENDOR (Vendor_ID、Vendor_Name、Vendor_Address、Website_ID)

FK Website_ID → WEBSITE (Null), (not Unique)
                     Delete: N, Update: C

CONTRACT (Contract_ID、Contract_Date、Author_ID、Vendor_ID)

FK Author_ID → AUTHOR (not Null), (not Unique)
               Delete: C, Update: C

FK Vendor_ID → VENDOR (not Null), (not Unique)
                   Delete: C, Update: C 

たくさんあることは承知していますが、ここで具体的な質問があります。3 つのテーブルを INNER JOIN するクエリをいくつか作成する必要があります。現在、これは私が作成したクエリ状況の 1 つです。

「コミック ストリップとベンダーの両方をホストするすべての Web サイトの名前をリストしてください」に対して、次のクエリを書きました。


Web サイトから Web_Name を選択

内部結合 Web サイトのコミック.Website_ID = Comic.Website_ID

内部結合 Web サイトのベンダー.Website_ID = Vendor.Website_ID;


このクエリは、3 つのテーブルに対して INNER JOIN を適切に使用していますか? 代わりに、クエリの状況は「Web サイトを共有しているすべてのコミックとベンダーの名前をリストする」にする必要がありますか? 内部結合と外部結合に関しては少し迷っているので、それらを含むクエリに問題があります。

お時間をいただきありがとうございます。

4

1 に答える 1

0

クエリは、コミックとベンダーの両方を持つすべての Web サイトを返します。. . しかし、複数回。それを修正する 1 つの方法は、次を追加することですdistinct

SELECT distinct w.Web_Name
FROM Website w INNER JOIN
     Comic c
     on w.Website_ID = c.Website_ID inner join
     Vendor v
     on w.Website_ID = w.Website_ID;

クエリが読みやすくなるため、テーブルにエイリアスも追加しました。

これを行う別の方法があります。1 つの方法を次に示します。

select w.WebName
from Website w
where w.Website_Id in (select WebSite_Id from Comics) and
      w.Website_In in (select WebSite_Id from Vendor)

これは、次のように言っています: コミックがあるサイトのリストとベンダーがあるサイトのリストにある Web サイトのすべての Web 名を取得してください。

于 2013-04-04T02:52:48.330 に答える