2011-09-20 175 views
1

我有一种情况,即在一张表中我有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.相对应。机械,第二年的书籍。如何编写查询

+0

我看不出任何方式你的两个表链接? –

+0

使用外键,我链接了两个表 –

+2

请提供与主文本分开的实际表定义,以便我们可以轻松看到它们并知道它们的名称。 'CREATE TABLE Foo(Course char(4))'。我在你的文字描述中看不到任何明显的FK。 –

回答

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) 
0

你必须在两个表中都tables.For例如添加COURSE_ID共同科拉姆,这样就可以比使用这个共同科拉姆

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 
0

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

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