【问题标题】:Need to show ALL authors in a table需要在表格中显示所有作者
【发布时间】:2015-04-06 22:28:45
【问题描述】:

我需要让所有作者都参与进来,即使他们没有出书。现在,所有作者都出书了。

架构:

作者:Au_ID(1、2、3 等...),作者(作者姓名...)

发布者:PubID(1、2、3 等...)、公司名称、地址、城市、州、邮编、电话

书名:书名(书名)、年份 (####)、ISBN(例如 0-0038307-6-4 )、PubID(1、2、3 等)、主题

写:ISBN,Au_ID

SELECT Authors.Author, Title.Title
FROM Authors, Title, Publisher, Wrote
WHERE Authors.Au_ID = Wrote.Au_ID AND Title.ISBN = Wrote.ISBN AND Publisher.PubID = Title.PubID
GROUP BY Author, Title;

即使没有书,我该怎么做才能包括所有作者?

【问题讨论】:

  • 从作者中选择 authors.author ?
  • Select Authors.author FROM Author 将为我提供来自 Authors 表的所有作者。我可以选择作者...但我喜欢格外小心

标签: sql


【解决方案1】:

使用OUTER JOIN。没有书籍的作者将在Title.Title 中拥有NULL

SELECT Authors.Author, Title.Title
FROM Authors LEFT JOIN Wrote ON  Authors.Au_ID = Wrote.Au_ID 
    LEFT JOIN Title ON Title.ISBN = Wrote.ISBN
GROUP BY Author, Title;

【讨论】:

  • @BIoodFox,你能提供完整的查询语法和错误信息吗? sqlfiddle.com/#!9/ca7b1/2 似乎有效,但我无法获取您的数据库架构。
  • 查询表达式中的语法错误(缺少运算符)'Authors.Au_ID = Wrote.Au_ID LEFT JOIN Title ON Title.ISBN = Wrote.ISBN LEFT JOIN Publisher ON Publisher.PubID = Title.PubID'。
  • @BIoodFox 这里似乎不需要 Publisher。更新了查询。如果问题仍然存在,请提供完整的查询和错误消息。
  • @BIoodFox 用你的模式看看 sqlfiddle,它可以工作 sqlfiddle.com/#!9/67311/2/0
  • 同样的错误信息。我正在使用 Microsoft Access 进行此 SQL 查询。我已经准确地写了你在那里的内容,因为我还没有完全理解 joins。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 2018-04-08
  • 2016-11-20
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多