2013-04-04 161 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其中网站是在具有喜剧和有供应商的站点列表中的网站列表。