繁体   English   中英

SQL联接3个表多对多关系

[英]SQL join 3 tables many to many relationship

有3个表具有多对多关系:

学生们

--------------------------------
|student_id|first_name|last_name|
---------------------------------

图书

--------------
|book_id|name|
--------------

借款

--------------------
|book_id|student_id|
--------------------

查询应找到书名和相关学生。 现在查询返回0行,表中包含信息,我的错误可能是什么?

SELECT books.name AS "book name", students.*  
FROM  books   
JOIN borrowings ON books.book_id = borrowings.book_id  
JOIN students ON students.student_id = borrowings.student_id;

您的SQL应该工作。 您正在使用主键和外键吗? 如果没有,请检查是否存在数据不一致。

即在postgesql中,您可以通过以下方式修复它:

ALTER TABLE students ADD PRIMARY KEY (student_id);
ALTER TABLE books ADD PRIMARY KEY (book_id);
ALTER TABLE borrowings ADD FOREIGN KEY (book_id) REFERENCES books(book_id);
ALTER TABLE borrowings ADD FOREIGN KEY (student_id) REFERENCES students(student_id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM