【问题标题】:What is the SQL statement for the following task:以下任务的 SQL 语句是什么:
【发布时间】:2016-09-23 17:33:54
【问题描述】:

列出出版平装书的出版商以及每个出版商出版的平装书数量。 我很难计算每个出版商的平装本。任何帮助都感激不尽。谢谢!

Henry Books 表架构

**author**          
    authorNum       INT             PRIMARY KEY 
    authorLast      VARCHAR(12),    
    authorFirst     VARCHAR(10)

**publisher**           
    publisherCode       CHAR(3)         PRIMARY KEY 
    publisherName       VARCHAR(25)     
    city                VARCHAR(20)

**book**            
    bookCode            CHAR(4)         PRIMARY KEY 
    title               VARCHAR(40)     
    publisherCode       CHAR(3)     
    bookType            CHAR(3)     
    paperback           ENUM('No', 'Yes') 

    CONSTRAINT book_fk_publisher 
        FOREIGN KEY (publisherCode) 
        REFERENCES publisher(publisherCode) 

**branch**      
    branchNum       INT          
    branchName      VARCHAR(50)  
    branchLocation  VARCHAR(50) 

**copy** 
    bookCode        CHAR(4)  
    branchNum       INT  
    copyNum         INT     PRIMARY KEY 
    quality         ENUM('Excellent', 'Fair', 'Good', 'Poor') 
    price           DECIMAL(8,2) 

    CONSTRAINT copy_pk 
        PRIMARY KEY (bookCode, branchNum, copyNum 
    CONSTRAINT copy_fk_book 
        FOREIGN KEY (bookCode) 
        REFERENCES book(bookCode),      
    CONSTRAINT copy_fk_branch 
        FOREIGN KEY (branchNum) 
        REFERENCES branch(branchNum) 

**wrote** 
    bookCode   CHAR(4)  
    authorNum  INT  
    sequence   INT 

    PRIMARY KEY (BookCode, AuthorNum), 
    CONSTRAINT wrote_fk_book 
        FOREIGN KEY (bookCode) 
        REFERENCES book(bookCode), 
    CONSTRAINT wrote_fk_author 
        FOREIGN KEY (authorNum) 
        REFERENCES author(authorNum)    

这就是我所拥有的:

SELECT publisherName, COUNT(paperback) AS "numPaperback"
FROM publisher, book
WHERE paperback = "Yes";

【问题讨论】:

  • 到目前为止您尝试过什么查询
  • 我自己做作业....有一个问题。 Kiran ......我会发布我所拥有的......谢谢。
  • 听起来你在这里做作业。那么你是怎么做你自己的

标签: mysql sql workbench


【解决方案1】:

看来你是新人。所以我会试着引导你完成这个......

  1. 将 publisher 表加入 book 表。他们共享一个似乎将他们联系在一起的发布者代码。

  2. 使用where 子句按书籍类型过滤联接表。你想要平装本。

  3. 对出版商代码和名称执行group by,然后count图书专栏

这有助于您入门吗?

【讨论】:

  • 感谢您的帮助....大声笑我发布了我上面的内容,所以我不会让更多人感到不安....我会尝试您发布的内容...谢谢你
  • 这也是我没有为你写完的原因。很高兴向我们展示您的尝试!
  • @kbball 指导初学者的好方法。我很欣赏让他们完成工作而不是盲目地粘贴代码。
  • 非常感谢!更有意义!
【解决方案2】:

您必须使用 count(*)Group by 来计算平装书的数量。这就是我编写查询的方式:

SELECT publisherName,count(*) AS "Number of paperbacks" FROM
publisher p INNER JOIN book b WHERE
p.publisherCode=b.publisherCode AND b.paperback="Yes"
GROUP BY publisherName;

【讨论】:

  • 您需要一个 ON 来代替 WHERE,然后将 AND 更改为 WHERE
  • 我总是使用 WHERE 而不是 ON。它工作正常。这就是为什么我认为这可能也有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 2016-11-16
  • 2011-08-15
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多