需要SQL查询以满足以下要求的插入

时间:2017-06-14 03:58:23

标签: sql sql-server

我仍然是MS-SQL的新手,不熟悉它的复杂查询。我试图找到不同的方法和简单的方法来编写以下要求的查询,而不使用光标或任何会降低性能的东西。

我有一个包含4列的链接表table1。 说A,B,C,D。

B是book1的ID,C是book2的ID。

我有另一个表table2(BooksInformation表),列数很少。 说W(BookID),X,Y,Z

table1的B列和C列只是将(外键)引用到table2的列W(主键)。因此,table1中的每一条记录都有两个条目。

我们有另一个表格3,列数很少 说E,F,G,H,I,J。

现在,table3的G列(BookID)是table2的W列(主键)的外键。 F列有 studentID

现在,当条件满足以下条件时,我想在table3中为student插入行:

  1. 如果学生包含Book1且他不包含Book2。

  2. 如果学生包含Book2且他不包含Book1。

  3. 确保Book2中存在Book1和Book2的ID。

  4. Book1和Book2链接可以在table1中找到。

    表1

        Field   Type    Null
    A   Table1ID    int(10) No
    B   BookIDFrom  char(20)    No
    C   BookIDTo    char(20)    No
    D   Desc    varchar(20) No
    

    表2

        Field   Type    Null
    W   Table2ID    char(20)    No
    X   BookName    char(20)    No
    Y   BookDesc    char(20)    No
    Z   Amount  decimal(10,6)   No
    

    表3

        Field   Type    Null
    E   Table3ID    char(20)    No
    F   StudentID   int(10) No
    G   BookID  char(20)    No
    H   Batch   char(20)    No
    

    这是我迄今为止所尝试过的:

    select *, tb3.StudentID, subtable.BookIDTo 
    from table3 tb3 
    right join 
        (select StudentID, tb1.BookIDTo 
         from table1 tb1 
         join table3 ED 
         on tb1.BookIDFrom = ED.BookID) subtable 
    on tb3.BookID = subtable.BookIDTo 
    and tb3.StudentID = subtable.StudentID 
    and tb3.BookID is null
    

0 个答案:

没有答案