从Korma中的表中选择没有字段



我正在尝试通过多个表(中间的三个加入表)进行连接。我认为Korma懒洋洋地评估了最后的联接。我要做的是添加限制联接中第一表结果的条件,但我只对加入的最后一个表中的字段感兴趣。

因此,例如说我有clubspeoplehobbies表,以及最后两个people-to-hobbies加入表。每个俱乐部都可以有很多人,每个人都有许多爱好。

我正在尝试获取属于特定俱乐部的所有人的所有爱好的全部细节,但我不希望从club表中进行任何领域。加入表意味着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"}))))

它有点明确,但是作为附加的好处,它是通过单个查询运行的。

相关内容

  • 没有找到相关文章

最新更新