有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;
答案 0 :(得分:1)
你的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)