【问题标题】:Counting positions in a row oracle计算行中的位置oracle
【发布时间】:2016-10-13 01:17:57
【问题描述】:

我正在制作书店数据库,在“作者”表中,我有一个列,我想在“书籍”表中计算作者所写的书籍。表“书籍”具有外键“id_author”。我不知道该怎么做,就像

SELECT COUNT(*) FROM Books WHERE id_author = "id of chosen author"

在代码中写什么来代替"id of chosen author"

如何将它放在“作者”表中的一行中?

【问题讨论】:

  • 如果作者发布了一本新书,您只需要更新它。您不应该将这种性质的动态数据真正存储在实际数据库中,只需在需要时提取它即可。

标签: sql oracle select count


【解决方案1】:

您可以加入authors 表并按其列(例如,名字和姓氏)进行查询:

SELECT COUNT(*)
FROM   books b
JOIN   author a ON b.id_author = a.id
WHERE  a.firstname = 'John' AND a.lastname = 'Doe'

【讨论】:

    【解决方案2】:

    根据您拥有的应用程序,该应用程序可能已经具有作者 ID。这意味着你可以做一个

    SELECT COUNT(*) FROM Books WHERE id_author = "id of author provided by application"
    

    虽然与 Mureinik 的回答相比差异可能不大,但这可以提高您在大型数据库上的性能,因为您不必在 author 和 book 表之间进行连接。

    【讨论】:

      【解决方案3】:

      按作者分类的书籍数量:

      select a.author, count(1)
      from author a
      join books b 
        on a.id = b.id_author
      group by a.author
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多