我有一个问题,我希望有人可以帮助我。事实上,我在一个设计不佳的数据库上工作,我无法控制更改其中的内容。我有一个“书籍”表,每本书可以有一个或多个作者。不幸的是,数据库不是完全相关的(请不要问我为什么,因为我从一开始就问同样的问题)。在“书籍”表中,有一个名为“Author_ID”和“Author_Name”的字段,因此当一本书由 2 或 3 个作者撰写时,他们的 ID 和他们的姓名将连接在由星号分隔的同一记录中。这是一个演示:
ID_BOOK | ID_AUTHOR | NAME AUTHOR | Adress | Country |
----------------------------------------------------------------------------------
001 |01 | AuthorU | AdrU | CtryU |
----------------------------------------------------------------------------------
002 |02*03*04 | AuthorX*AuthorY*AuthorZ | AdrX*NULL*AdrZ | NULL*NULL*CtryZ |
----------------------------------------------------------------------------------
我需要针对这个表创建一个视图,它会给我这个结果:
ID_BOOK | ID_AUTHOR | NAME AUTHOR | Adress | Country |
----------------------------------------------------------------------------------
001 |01 | AuthorU | AdrU | CtryU |
----------------------------------------------------------------------------------
002 |02 | AuthorX | AdrX | NULL |
----------------------------------------------------------------------------------
002 |03 | AuthorY | NULL | NULL |
----------------------------------------------------------------------------------
002 |04 | AuthorZ | AdrZ | CtryZ |
----------------------------------------------------------------------------------
我将继续尝试这样做,我希望有人可以帮助我至少提供一些提示。非常感谢你们。
在我应用你们给出的解决方案后,我遇到了这个问题。我正在努力解决它,希望你能帮助我。事实上,当 sql 查询运行时,CLOB 字段在其中一些包含 NULL 值时是杂乱无章的。结果应该像上面一样,但我得到了以下结果:
ID_BOOK | ID_AUTHOR | NAME AUTHOR | Adress | Country |
----------------------------------------------------------------------------------
001 |01 | AuthorU | AdrU | CtryU |
----------------------------------------------------------------------------------
002 |02 | AuthorX | AdrX | CtryZ |
----------------------------------------------------------------------------------
002 |03 | AuthorY | AdrZ | NULL |
----------------------------------------------------------------------------------
002 |04 | AuthorZ | NULL | NULL |
----------------------------------------------------------------------------------
为什么将 NULL 值放在最后?谢谢你。