【发布时间】:2012-11-24 08:52:27
【问题描述】:
假设我们有一个包含表格的数据库:
“艺术家”(列:名称、id)和
“歌曲”(标题、composer_id、songwriters_id)。
我想打印带有作曲家姓名和词曲作者姓名的歌曲。 我已经成功地打印了作曲家的名字:
SELECT title, name AS Composers_Name
FROM artist, song
WHERE song.composers_id = artist.id;
我无法获取词曲作者的姓名..
我尝试的是这样的:
SELECT title, name AS Composers_Name, name AS Songwriters_name
FROM artist, song
WHERE song.composers_id = artist.id AND song.songwriters_id = artist.id;
但这会返回作曲家和词曲作者是同一个人的所有歌曲。 我正在考虑使用 JOIN,但我不确定如何..
【问题讨论】:
-
你的问题真的不清楚。您只有一个
name列(在artist表中)。你怎么能把它作为作曲家的名字和作曲家的名字呢? -
有什么不清楚的地方?假设艺术家是作曲家或词曲作者。
-
克里斯,太好了。你怎么知道哪个是哪个(哪个应该是词曲作者,哪个作曲家)?您现在是在询问将多行合并为一行吗?如果是这样,您需要一种方法来区分名称所代表的类型。
-
我知道我对此发表评论和回答很晚,但是您可以尝试使用 SQL 中称为关系除法的概念,它实际上可以解决您的问题。我最近遇到了一个类似的问题,并使用桌面上的关系除法解决了它。此外,使用这种方式,您也不需要执行连接,只需要一个查询。
标签: mysql