gpt4 book ai didi

database - 使用 boolean 逻辑创建数据库 View

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:53 25 4
gpt4 key购买 nike

我的 google 搜索技巧让我失望了,而且我无论如何都不是数据库专家!我有一个非常简单的数据库架构,如下所示:

database schema http://bit.ly/adeUVL

CANDY 表中的 properties_id 是 EXPENSIVE_PROPERTIES 表中 id 的外键。 properties_id 仅在糖果很贵时设置。如果它很昂贵,那么 EXPENSIVE_PROPERTIES 表中的相应值将被填充。

当我想获取糖果列表时,我基本上想这样做:

  • 请求 CANDY 表中的所有属性,例如名称和颜色
  • 如果 properties_id 值不为空,可选择获取昂贵的属性

过去,我做过两次查询,但这很愚蠢,因为我应该能够创建一个 View ,将所有属性聚合到一个表中,如果没有相应的属性,则将其他字段留空EXPENSIVE_PROPERTIES 表中的 ID。

谁能告诉我如何在 SQLite 中创建这个 View ?我认为这是可能的,但无法弄清楚 from the docs :

alt text

IF NOT EXISTS 元素似乎与特定字段值的存在无关。

更新

问题已得到解答,但我觉得奇怪的一件事是,在某些情况下,我会看到重复的条目。我正在使用 SQLite Administrator,当我执行 CREATE VIEW 语句并查看结果选项卡时,我得到了唯一的条目。如果我只执行 SELECT 语句,我会得到重复的行。如果我创建 View ,然后执行 SELECT * FROM myview;我还看到重复的行。任何人都可以阐明这一点吗?我应该创建一个新问题吗?

更新 #2

没关系,我发现了我的错误——我在 FROM 之后有两个表,这导致了重复。

最佳答案

您可以使用 LEFT OUTER JOIN从另一个表中检索数据,该表可能没有主表中某些行的数据。

create view vCandy as
select c.id, c.name, c.color, c.properties,
ep.chocolate, ep.gold_foil
from Candy c
left outer join Expensive_Properties ep on c.properties_id = ep.id

IF NOT EXISTS 不是指处理不存在的数据。相反,这意味着它将创建 View ,如果它不存在的话。这是为了防止多次运行该语句时出错。

关于database - 使用 boolean 逻辑创建数据库 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com