按另一个表中的列排序

g0czyy6m  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(503)

我需要一份数据库里所有书的清单。清单应包括:
出版商名称、书名、所有书籍的出版年份。
列表必须按出版商和标题的字母顺序排序。
我无法对两种情况的列表进行排序,只能对其中一种情况进行排序。
以下是表格:
发布者表

  1. cursor.execute("DROP TABLE IF EXISTS `Publishers`;")
  2. cursor.execute('''
  3. CREATE TABLE `Publishers` (
  4. `PublisherID` INTEGER PRIMARY KEY AUTOINCREMENT,
  5. `Name` VARCHAR(45) NULL,
  6. `City` TEXT NULL,
  7. `Country` TEXT NULL
  8. );

书桌

  1. cursor.execute("DROP TABLE IF EXISTS `Books`;")
  2. cursor.execute('''
  3. CREATE TABLE `Books` (
  4. `BookID` INTEGER PRIMARY KEY AUTOINCREMENT,
  5. `Title` VARCHAR(45) NULL,
  6. `ISBN` VARCHAR(45) NULL,
  7. `ISBN13` TEXT NOT NULL CHECK (length(ISBN13)=13),
  8. `PublisherID` INT NOT NULL,
  9. `Year_Published` VARCHAR(45) NULL,
  10. `Price` DOUBLE NULL,
  11. FOREIGN KEY (`PublisherID`) REFERENCES Publishers(PublisherID) ON DELETE CASCADE ON UPDATE CASCADE
  12. );
  13. ''')

我可以写这篇文章,但不能对这两种情况进行排序

  1. cursor = conn.cursor()
  2. for row in cursor.execute('''SELECT Publishers.name,title,Year_Published
  3. FROM books
  4. INNER JOIN publishers on publishers.PublisherID = books.PublisherID
  5. ORDER BY
  6. title ASC, name.publisher ASC;'''):
  7. print(row)
  8. cursor.close()
vojdkbi0

vojdkbi01#

您似乎在寻找一个连接:

  1. select p.name, b.title, b.year_published
  2. from books b
  3. inner join publishers p on p.publisherID = b.publisherID
  4. order by p.name, b.title
6bc51xsx

6bc51xsx2#

我写错了条件。答案似乎是以下感谢大家!1

  1. cursor = conn.cursor()
  2. for row in cursor.execute('''SELECT Publishers.name,title,Year_Published
  3. FROM books
  4. INNER JOIN publishers on publishers.PublisherID = books.PublisherID
  5. ORDER BY
  6. publishers.name ASC, books.title ASC;'''):
  7. print(row)
  8. cursor.close()

相关问题