在没有公共字段的查询中连接表

Joining tables in query with no common fields

我正在为包含以下四个 table 的图书馆创建数据库。

Table 1 - 本书

isbn                title            author
111-2-33-444444-5   Pro JavaFX       Dave Smith
222-3-44-555555-6   Oracle Systems   Kate Roberts
333-4-55-666666-7   Expert jQuery    Mike Smith

Table 2 - 复制

code    isbn                   duration
1011    111-2-33-444444-5      21
1012    111-2-33-444444-5      14
1013    111-2-33-444444-5      7
2011    222-3-44-555555-6      21
3011    333-4-55-666666-7      7
3012    333-4-55-666666-7      14

Table 3 - 学生

no      name      school       embargo
2001    Mike      CMP          No
2002    Andy      CMP          Yes
2003    Sarah     ENG          No
2004    Karen     ENG          Yes
2005    Lucy      BUE          No

Table 4 - 贷款

code    no      taken       due         return
1011    2002    2015.01.10  2015.01.31  2015.01.31
1011    2002    2015.02.05  2015.02.26  2015.02.23
1011    2003    2015.05.10  2015.05.31  
1013    2003    2014.03.02  2014.03.16  2014.03.10
1013    2002    2014.08.02  2014.08.16  2014.08.16
2011    2004    2013.02.01  2013.02.22  2013.02.20
3011    2002    2015.07.03  2015.07.10  
3011    2005    2014.10.10  2014.10.17  2014.10.20

我一直在尝试创建一个 SELECT 查询,从 'book' 中获取 isbn 和书名,从 'student' 中获取编号和名称,但只显示有持续时间的图书的结果7 天。

我尝试使用 INNER JOIN 加入 tables 并在 'copy' table 中使用 'code' 的 LIKE 子句来过滤持续时间,但似乎什么也没有为我工作。我在加入 'book' 和 'student' 时遇到问题,因为它们没有共同的列。有办法解决这个问题吗?

编辑

好的,除了末尾的 WHERE LIKE 之外,以下查询在大多数情况下似乎都能正常工作;

SELECT book.isbn, book.title, copy.code, copy.duration, student.no, student.name FROM book INNER JOIN copy ON copy.isbn = book.isbn INNER JOIN loan ON loan.code = copy.code INNER JOIN student ON student.no = loan.no WHERE copy.code LIKE 1013 AND copy.code LIKE 3011

我也试过了

WHERE copy.code LIKE 1013 AND 3011

只显示 1013 的结果。我可能遗漏了一些简单的东西,有什么建议吗?

bookstudent

之间似乎没有直接关系
  • bookcopy(isbn)
  • 有关系
  • copyloan有关系(code)
  • loanstudent有关系(无)

因此我们dobookstudent[=11=之间有间接关系]

试穿尺码:

SELECT book.isbn
     , book.title
     , book.author
     , copy.code
     , copy.duration
     , loan.taken
     , loan.due
     , loan.return
     , student.no
     , student.name
     , student.school
     , student.embargo
FROM   book
 INNER
  JOIN copy
    ON copy.isbn = book.isbn
 INNER
  JOIN loan
    ON loan.code = copy.code
 INNER
  JOIN student
    ON student.no = loan.no

P.S。你控制这个数据结构吗?如果是这样,可以推荐一些更改。