繁体   English   中英

查询遥远的关系

Querying for distant relations

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在为应用程序中的一些关系数据建模。 我主要想知道如何处理SQL中的远距离关系,尽管就上下文而言,这是一个Ruby应用程序,而我正在使用Sequel作为ORM。

一个示例关系如下所示:

alphas one-to-many bravos
bravos many-to-one charlies
charlies one-to-many deltas
deltas one-to-many echoes

因此,使用ORM并在Ruby中进行工作,我可能会天真地查询与Alpha相关的所有Echoes,如下所示:

a = Alpha.where id: 1
echoes = []
a.bravos.each do |bravo|
  bravo.charlie.deltas.each do |delta|
    echoes << delta.echoes
  end
end
echoes.flatten

此方法有效,但无法利用数据库,而是在应用程序层中完成了大部分工作。 在丑陋的psuedo-sql子查询中表达相同的想法看起来像:

SELECT * FROM echoes WHERE delta_id IN
  SELECT delta_id FROM charlies WHERE charlie_id IN
    SELECT charlie_id FROM bravos WHERE bravo_id IN
      SELECT id FROM bravos WHERE alpha_id = 1

这本质上是相同的蛮力方法,似乎必须有更好的方法。

所以我的问题是:

  1. 像这样的遥远关系写查询的更好方法是什么?

  2. 对表示这种遥远关系的模式设计是否进行了更改?

在我看来,我可以在echoes上创建一个alpha_id列,并使用它直接查询,然后,如果中间关系发生变化,我将依靠应用程序始终更新该列。 在我看来,这是一个坏主意,但是在这种情况下,它肯定会使查询效率更高。

我很想听听一些SQL专家的意见,当您需要经常查询的遥远相关数据时,您会怎么做?

问题暂未有回复.您可以查看右边的相关问题.
1 查询遥远的关系

我有三个表: users , accounts和hotels. 用户和帐户与belongstoMany关系相关联,而Accounts和Hotels以相同的方式连接。 每个用户都有帐户,这些帐户有酒店。 当我有Auth::user(),如何归还所有酒店? $accounts = Aut ...

3 访问与belongsMany的遥远关系

因此,每个用户可以拥有多个页面,并且每个页面可以具有多个用户(分配一个角色),并且每个页面可以具有一个作业。 现在,我得到用户拥有的页面,如下所示: user.php 现在,我正在尝试获取属于用户所有页面的用户的工作 我在页面模型上有一个关系,其中页面可以有很多工作,例如: ...

4 Laravel遥远的多对多关系

架构 : 媒体 :id,mediable_id,mediable_type,名称 类别 ID,parent_id,名称, 文章 ID,标题,描述,author_id和其他一些元数据字段 articles_categories article_id的,CATEGORY_ID, ...

5 Laravel 4遥远的雄辩关系

我正试图用Eloquent急切地加载一个遥远的关系,并遇到问题。 涉及5个表,它们是用户 , corporate_users , 公司和两个Sentry表( 组和users_groups )。 表格设置如下: 用户拥有OneUne CorporateUsers(一对一) ...

6 Laravel有很多通过询问中间的关系以及遥远的

我想执行以下操作(使用一些相当粗糙的伪代码): 换句话说,用户可以下很多订单。 每个订单都有一个或多个订单行。 我想找到用户放置的所有订单行(订单行,而不是订单),但前提是订单标头具有某种状态,并且仅当订单行具有另一个参数被选中时。 这可以是添加行的日期,也可以是productId ...

7 Laravel 5:通过遥远的关系展现价值

我对此表示怀疑,并确定您可以帮助我。 如果我有一个带有'work_id'行的表用户,并且此值是一个带有'id'到'work'表的相关的前级键。 在“工作”表中,我有一个“ work_competence_id”,并且是“工作_能力”表的前导键。 在“ work_competec ...

8 CakePHP从遥远的关系中获取数据

以下是一个示例,未在我的应用程序中使用,但我希望获得理论并将其应用于答题人之后将其应用于我自己的应用程序。 因此,以一个包含3个表的简单应用为例:用户,位置和帖子 并且关系是一个帖子有一个用户,一个用户有一个位置,但是一个位置不一定有一个用户。 如果我拉出一个帖子列表,然后显示 ...

10 遥远的许多

我有四个模型: 用户 客户 商店 机会 关系的定义如下: 用户有很多客户端 客户有很多商店 商店有很多机会 用户hasManyThrough商店,客户端(有效) 问题是我试图通过内置的Laravel关系访问Use ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM