【问题标题】:Sequel Left Join续集左连接
【发布时间】:2016-05-08 07:36:37
【问题描述】:

我的目标是在房间、人员和工作班次之间建立一种关系。所以我的续集字符串看起来像这样:

      x =  DB[:raum].join_table(:left, DB[:platz], :rid => :id)
      .join_table(:left, DB[:patient_behandlungs_link], :platz_id => :id)
      .join_table(:left, DB[:patienten], :id => :patienten_id)
      .join_table(:left, DB[:behandlungsverfahren], :id => :t2__behandlungsverfahren_id)
      .join_table(:left, DB[:dialysezeit], :id => :t2__dialysezeit_id)
      .join_table(:left, DB[:nadeln], :id => :t2__dialysenadel_id)
      .join_table(:left, DB[:dialysatorzugang], :id => :t2__dialysatorzugang_id)
      .where("raumnummer = ?", raumid.to_i)

它的工作原理是这样的,但在结果表中还有一个用于班次 ID 的字段。在这种状态下,它不会区分该人在哪个班次工作。如果我进行一次 foreach 并将值推出,我会得到空的 nil 字段,里面没有人,这是我想要的,我会从所有轮班中得到房间里的人。

例如,如果我创建一个.filter(:schicht_id => 1),那么我就会失去我的 nil 值。我需要他们将新人分配到空位,所以我尝试了(:schicht_id => 1).or(:schicht_id => nil) 和类似的东西,但我没有得到我想要的结果

【问题讨论】:

  • 当你用英文命名你的类和方法时,你的代码会更容易阅读和理解。 Ruby 的方法名称和语法允许编写非常易于理解的代码。不幸的是,当您混合不同的语言时,这不起作用,读者必须经常切换语言上下文......
  • 我在您的加入中找不到schicht(=工作班次)。那么你在哪里定义schicht_id 的过滤器?

标签: mysql ruby database sequel


【解决方案1】:

我认为我将与续集无关的事情归咎于续集。 In the image my select box starts showing options from the second value

这种行为让我想,我的连接和分组指令出了点问题....我现在必须弄清楚为什么选择框显示的值是 2-9 而不是 1-9。在 HTML 站点源代码中,给出了所有 9 个选项。 这对我来说很奇怪。

对不起,责怪续集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多