gpt4 book ai didi

clojure - 在 Korma 的表中不选择任何字段

转载 作者:行者123 更新时间:2023-12-01 05:15:12 25 4
gpt4 key购买 nike

我正在尝试跨多个表(三个加上中间的连接表)进行连接。我认为 korma 正在懒惰地评估最后一次加入。我想要做的是添加一个条件来限制连接中第一个表的结果,但我只对连接中最后一个表中的字段感兴趣。

例如说我有 clubs , peoplehobbies表和 people-to-hobbies最后两个的连接表。每个俱乐部可以有很多人,每个人可以有很多爱好。

我正在尝试获取属于特定俱乐部的人的所有爱好的完整详细信息,但我不想要来自 club 的任何字段。 table 。连接表意味着 korma 将创建两个查询,一个用于获取特定俱乐部中的所有人,另一个用于通过 people-to-hobbies 检索该人的爱好。连接表。

我的 korma 查询如下所示:

(select clubs
(with people
(with hobbies
(fields :hobby-name :id)
(where {:clubs.name "korma coders"}))))

问题是我没有指定我想要的字段 clubspeople ,默认选择 * .如何不包含这些表中的字段?这是可能的,或者事实是 hobbies延迟加载意味着 korma 必须在第一个查询中返回一些结果(这会为我提供一个过滤后的人员列表),以便当我稍后出于爱好询问它时,它具有运行第二个查询所需的 ID?

最佳答案

我会用 join 这种情况下的宏:

(select clubs
(join people)
(join people-to-hobbies)
(join hobbies)
(fields :hobbies.hobby-name :hobbies.id)
(where {:clubs.name "korma coders"}))))

它更明确一点,但作为一个额外的好处,它使用单个查询运行。

关于clojure - 在 Korma 的表中不选择任何字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21242097/

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