串联 - 名字和姓氏相同的列 (Oracle SQL)

Posted

技术标签:

【中文标题】串联 - 名字和姓氏相同的列 (Oracle SQL)【英文标题】:Concatenation - First Name and Last Name Same Column (Oracle SQL) 【发布时间】:2016-05-25 01:32:39 【问题描述】:

对 Oracle SQL 来说是全新的,话虽如此:

尝试在与“作者”相同的列中显示作者的名字和姓氏以及该作者撰写的书籍数量(按作者名字升序排列)。

SELECT AUTHOR.FNAME || ' ' || AUTHOR.LNAME AS "Author",
COUNT(BOOKAUTHOR.AUTHORID) AS "Books written"
FROM BOOKS
INNER JOIN BOOKAUTHOR ON BOOKS.ISBN = BOOKAUTHOR.ISBN
INNER JOIN AUTHOR ON BOOKAUTHOR.AuthorID = AUTHOR.AuthorID
ORDER BY AUTHOR.FNAME ASC

连接似乎不起作用,并且整个查询存在问题。

以下是相关的表格:

图书:ISBN、TITLE

作者:AUTHORID、LNAME、FNAME

图书作者:ISBN、AUTHORID

即使我尝试只使用 SELECT 和 FROM 进行简单的连接,它也不会显示任何结果。

例如:

SELECT FNAME || ' ' || LNAME "AUTHOR NAME"
FROM AUTHOR

【问题讨论】:

您确定您的作者表中有任何行吗?您是否尝试使用 AS 进行第二个查询 实际上第二个查询现在有效。运行一段时间后,我的 oracle 似乎停止返回任何查询结果。我必须重新启动它,然后查询才能工作。 【参考方案1】:

试试这个:

SELECT CONCAT(CONCAT(AUTHOR.FNAME, ' '),
      AUTHOR.LNAME) AS "AUTHOR" 
COUNT(BOOKAUTHOR.AUTHORID) AS "Books written"
FROM BOOKS
INNER JOIN BOOKAUTHOR ON BOOKS.ISBN = BOOKAUTHOR.ISBN
INNER JOIN AUTHOR ON BOOKAUTHOR.AuthorID = AUTHOR.AuthorID
ORDER BY AUTHOR.FNAME ASC

【讨论】:

以上是关于串联 - 名字和姓氏相同的列 (Oracle SQL)的主要内容,如果未能解决你的问题,请参考以下文章

ORDER BY Oracle 中的串联名称?

如何在 PHP 登录脚本中验证来自 SQL 的串联?

从表中复制全名并将名字和姓氏插入新表的单独列中

Oracle中的SQL语句的题目,求解答啊

oracle建表语句

Oracle SQL 动态子串