有一个“公司表”CompanyTable:  CompanyID   |   CompanyName
 (公司主键) |  (公司名称)
       1      |       AA
       2      |       BB----------------------------------
有一个“险种表”InsuranceTable:
  
  InsuranceID  |   InsuranceName
 (险种的主键)|   (险种名称)
       1       |        II
       2       |        KK----------------------------------
最后有一个连接公司表和险种表的“营业额表”TotalTable:
   
    CompanyID  |    InsuranceID   |   TotalValue (公司拥有某个险种类型, TotalValue是这个险种的值)
  (公司的外键)|   (险种的外键) |
        1      |         1        |     Value1
        1      |         2        |     Value2--------------------------------------------------
第一个问题:请问当“营业额表”已经建好的情况下,如何为它的CompanyID、InsuranceID设置为两个外键?是不是这样写:alter table TotalTable add constraint FK_TotalTable_CompanyID foreign key(CompanyID) references CompanyTable(CompanyID);alter table TotalTable add constraint FK_TotalTable_InsuranceID foreign key(InsuranceID) references InsuranceTable(InsuranceID);---------------------------------------------------
第二个问题:当我要找公司名为BB下的险种KK,其TotalValue的值,怎么用sql语句查这个TotalTable表呢?

解决方案 »

  1.   

    这个使用两个inner join关系运算来将3个表关联在一起,同时给出你的条件(CompanyName="BB" and InsuranceName="JJ"),最后select TotalTable。毫无疑问是课堂必会的最基本题。
      

  2.   


    您说的意思是不是在查询语句中inner join三个表?我不是要这样的格式,而是在查询前先设定好。
      

  3.   

    第一个问题:你的写法是对的,但是前提是公司表和险种表已经创建好了
    第二个问题:用inner join也行,用子查询也行
    写个子查询
    select TotalValue from TotalTable where CompanyID=(select CompanyID from CompanyTable where CompanyName='BB') and InsuranceID=(select InsuranceID  from InsuranceTable where InsuranceName='KK')
      

  4.   

    回楼上的,两个表已经建好了;您写的子查询我懂了,想问问inner join是不是只能在查询过程中建立表之间的连接,查询结束又变成互不相干
    的三个表了?
      

  5.   

    假如我没在一楼写的SQL Code,直接inner join,就不行吧?“查询出来的结果是一个新表”,您的意思应该是select 字段1 字段2 字段3......显示的是一个新表?