【问题标题】:Fetching data from many-to-many relationships从多对多关系中获取数据
【发布时间】:2012-06-16 14:30:39
【问题描述】:

我想从书表中获取某个作者的所有书籍的书名和主题表中的主题名称

这是表格关系

我试图从表格中选择标题和主题,但我无法让它与多对多关系一起使用

SELECT book_title,subject_name FROM book,subject WHERE $subject_ID = subject_ID INNER JOIN book_author ON author_ID = '$author_ID'

我想过做两个单独的查询,如果有人可以帮助我,我会很高兴。

【问题讨论】:

    标签: mysql database many-to-many


    【解决方案1】:

    试试这个:

    SELECT book_title, subject_name
    FROM Book
    INNER JOIN Book_Author ON Book.book_ISBN = Book_Author.book_ISBN
    INNER JOIN Author ON Book_Author.author_ID = Author.author_ID
    INNER JOIN Subject ON Subject.subject_ID = Book.subject_ID
    WHERE author_lastname = [whatever];
    

    而且发布模型做得很好:)

    编辑以匹配确切需要:

    SELECT book_title, subject_name
    FROM Book
    INNER JOIN Book_Author ON Book.book_ISBN = Book_Author.book_ISBN
    INNER JOIN Subject ON Subject.subject_ID = Book.subject_ID
    WHERE author_ID = '11';
    

    顺便说一句,您有一个"Column 'author_ID' in where clause is ambiguous",因为此列同时出现在 Book_Author 和 Author 中。这就是为什么你必须在它前面加上表名:)

    【讨论】:

    • 我正在尝试将其与作者 ID 一起使用,因为我需要使用唯一的作者,这是我的查询:SELECT book_title, subject_name FROM Book INNER JOIN Book_Author ON Book.book_ISBN = Book_Author.book_ISBN INNER JOIN Author ON Book_Author.author_ID = Author.author_ID INNER JOIN Subject ON Subject.subject_ID = Book.subject_ID WHERE author_ID = '11'
    • 这是我得到的错误:“where 子句中的列 'author_ID' 不明确”
    • 如果您使用作者 ID,则无需加入 Author 表。删除此联接或使用 WHERE Author.author_ID = '11' 重写查询的结尾:)
    猜你喜欢
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多