我一直在把头发拉过来......而且我相当确定它的前沿足够......但我找不到答案。
我想做的是从两张桌子中提取信息。我是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及其信息相关的书籍。任何帮助都是值得赞赏的!
答案 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
子句用于限制所选记录。