使用Map表查询两个数据库

时间:2011-10-29 19:20:02

标签: mysql sql

我一直在把头发拉过来......而且我相当确定它的前沿足够......但我找不到答案。

我想做的是从两张桌子中提取信息。我是JOIN的新手。我想作为一个实际例子,假设我有一个书籍数据库(id,title,author,edition,year)。然后我有一个类的数据库(id,subject,teacher)。有些课程会使用同一本书。所以,我创建了一个如下所述的地图表:

选择查询/ Joinamanytomanymaptable.htm“> HTTP://www.java2s.com/Tutorial/MySQL/0040_Select-Query/Joinamanytomanymaptable.htm

我创建了一个名为ClassBook的表,其中类id(ClassID)列在一列中,book id(BookID)列在另一列中。

我想要的是根据类绘制BOOK信息。因此,如果类ID为3,我想要与该类相关的所有书籍及其信息。以下是我查询的一个例子:

SELECT * FROM ClassBook     加入书籍        ON ClassID = 3

从这个查询中,如果Class id(3)在表(ClassBook)中8次,它将输出每本书及其信息8次。我想要的只是与班级ID 3及其信息相关的书籍。任何帮助都是值得赞赏的!

2 个答案:

答案 0 :(得分:0)

试试这个

SELECT books.* FROM ClassBook CB
JOIN books ON  CB.bookid=Books.id
WHERE cb.ClassID=3 

连接将为类书表中的所有列创建一个更大的“结果”,并且书表中的所有列共享相同的书ID号... WHERE子句然后仅显示那些更大结果的结果在ClassID = 3中使用。 books。*语法只显示books表中的列,a *本身将显示两个表中的所有列。

答案 1 :(得分:0)

SELECT * FROM class
JOIN ClassBook on class.id = ClassBook.ClassID
JOIN books on ClassBook.BookID = books.id
WHERE Class.ID = 3;

这是您用于将所有内容链接在一起的格式。请注意,on子句通常用于描述与要连接的表相关的条件。 where子句用于限制所选记录。