2013-04-04 7 views
0

這是我第一次在這裏發表。我創建一個SQL數據庫以下的關係架構SQL內部加入3表


作者(AUTHOR_ID,AUTHOR_NAME,Author_Address)

網站(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_NAME,Product_Cost,Comic_ID,VENDOR_ID)

FK Comic_ID→COMIC(不爲空),(不是唯一的) 刪除: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_ID,Contract_Date,A uthor_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 

我知道這是很多,但有一個在這裏的一個具體問題;我需要創建INNER JOIN 3表一起的幾個查詢。現在,這是我創建的查詢情況之一。

「列出承載兩個連環畫和供應商的每一個網站的名稱」 ,而我已經寫了下面的查詢:


SELECT Web_Name FROM網站

INNER JOIN漫畫on Website.Website_ID = Comic.Website_ID

INNER JOIN Vendor on Website.Website_ID = Vendor.Website_ID;


此查詢是否正確使用3個表的INNER JOIN?應該將查詢情況列爲「列出每個共享網站的漫畫和供應商的名稱?」在Inner和Outer Joins方面,我有點失落,所以我在涉及他們的查詢時遇到了麻煩。

謝謝你的時間。

回答

0

您的查詢將返回每個網站與漫畫和供應商。 。 。但多次。要解決這個問題的方法之一是一個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; 

我還添加了別名,你的表,因爲它使查詢更具可讀性。

還有其他方法可以做到這一點。這裏有一種方法:

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) 

這是說:讓我所有的webnames其中網站是在具有喜劇和有供應商的站點列表中的網站列表。