在没有公共字段的查询中连接表
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 的结果。我可能遗漏了一些简单的东西,有什么建议吗?
book 和 student
之间似乎没有直接关系
- book与copy(isbn)
有关系
- copy和loan有关系(code)
- loan和student有关系(无)
因此我们do在book和student[=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。你控制这个数据结构吗?如果是这样,可以推荐一些更改。
我正在为包含以下四个 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 的结果。我可能遗漏了一些简单的东西,有什么建议吗?
book 和 student
之间似乎没有直接关系- book与copy(isbn) 有关系
- copy和loan有关系(code)
- loan和student有关系(无)
因此我们do在book和student[=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。你控制这个数据结构吗?如果是这样,可以推荐一些更改。