具有n-m关系的SQL案例查询

问题描述 投票:0回答:1

我正在使用500行SQL查询,因此,我将尝试使用一个更简单的示例。...

假设我有一个具有BooksBook_idAuthor列的表Title,具有发布者信息的表Publisher和一个包含TranslationsBook_idTitle列。

我想Language来自某个出版商的所有书籍,无论它们是否已被翻译成西班牙语,但我确实想显示一列包含SELECT的列(如果它们具有西班牙语翻译。

因此,假设我的查询是true。如何从可以多次包含同一本书或多次包含同一本书的表中得出西班牙语列中的真值?

sql informix
1个回答
1
投票

学习使用正确的,明确的,标准 SELECT Author, Title, Spanish FROM Books, Translations WHERE Publisher.Book_id = Books.Book_id AND Translations.Book_id = Books.Book_id AND Publisher_id = 1语法!我确实希望您不要有500行使用逗号进行联接的代码。

您想要一个JOINleft join表达式:

case

注意:这使用SELECT b.Author, b.Title, (CASE WHEN t.Book_id IS NOT NULL THEN 'true' ELSE 'false' END) as spanish_flag FROM Books b LEFT JOIN Translations t ON t.Book_id = b.Book_id AND t.language = 'Spanish' WHERE b.Publisher_id = 1; / 'true'的字符串表示形式。您尚未指定数据库。有些直接支持布尔值。

实际上,假设一本书可以对一种语言进行多种翻译。编写查询的更自然的方法是使用'false'

EXISTS
© www.soinside.com 2019 - 2024. All rights reserved.