如何编写查询

时间:2011-09-20 09:03:12

标签: sql-server

我有一种情况,即在一张桌子中我有Course, Semester and University列,在另一张桌子中我有Book Number, Author, Booktitle, Publication and Year。对于每门课程,每学期和每所大学的书都不同(即Book Number, Author, Booktitle, Publication),我要做的是基于课程,学期和大学,我必须检索Book Number, Author, Booktitle and Publication的值。即我正在做B.E. Mech,第二年意味着,书号,作者,书签和出版物的检索值应与B.E.相对应。机械,二年级书籍。

5 个答案:

答案 0 :(得分:0)

您必须在两个表中都有一个公共列。例如,在两个表中添加course_id,以便您可以使用此公共列连接两个表

答案 1 :(得分:0)

根据我的理解,一本书可能有多个课程/学期/大学组合,每个课程/学期/大学可能不止一本书?这是many-to-many关系,只能通过第三个表来解决:

CsuToBooks
----------
CsuID
BookID

填写此表时,在查询中使用两个“LEFT JOIN”关系:

SELECT Course, Semester, University, BookNumber
FROM csu
LEFT JOIN CsuToBooks ON (csu.ID = CsuToBooks.csuID)
LEFT JOIN Books ON (CsuToBooks.BookID = Books.ID)

答案 2 :(得分:0)

在第一个表格中,添加一个Book_number列。这将提供2个表之间的映射。 然后你可以编写像

这样的查询
Select * from book_table 
where book_table.book_number = course.book_number 
      AND course.course = <course name> 
      AND course.Semester = <semester> 
      AND course.university = <university

答案 3 :(得分:0)

你需要一个链接表,因为(大概)书籍和课程有多对多的关系。因此,您将拥有带有CourseID和BookID列的Courses_Books。

答案 4 :(得分:0)

SELECT 
    booknumber,
    author,
    booktitle,
    publication
FROM
    table1,
    table2
WHERE
    course = 'mech' AND semester = 4