【问题标题】:Is it possible to join one table two times?一张桌子可以加入两次吗?
【发布时间】:2017-08-02 12:04:50
【问题描述】:

我的问题是: 我想显示一个包含“客户”列的表格。 这是一个表,其中包含“度量”的集合。问题是,有两种“措施”。它们也在数据库表中用一个名为“类型”(0 和 1)的列分隔。

每个“度量”都属于一个“客户”,但是对于每个“度量”类型,获取“客户”名称的方法不同:

这是代码:

$select = "blablabla..., c.name as customer";
$this->db->select($select);
$this->db->from("it_measure m");

类型为 0 的“措施”继续:

$this->db->join("it_ma ma", "m.id = ma.measure", "LEFT OUTER");
$this->db->join("it_a a", "ma.a = a.id", "LEFT OUTER");
$this->db->join("it_i i", "a.i = i.id", "LEFT OUTER");
$this->db->join("it_customer c", "i.customer = c.id", "LEFT OUTER");

对于类型 1 的“措施”:

$this->db->join("it_mf mf", "m.id = mf.mid", "LEFT OUTER");
$this->db->join("it_f f", "mf.fid= f.id", "LEFT OUTER");
$this->db->join("it_w w", "f.w = w.id", "LEFT OUTER");
$this->db->join("it_ga ga", "w.a = ga.id", "LEFT OUTER");
$this->db->join("it_customer c", "ga.customer = c.id", "LEFT OUTER");

如您所见,我有不同的联接来获取这两种类型的客户名称。 两个示例中的最后一个连接是重要的连接。我想加入同一张桌子(table_customer)。 我如何才能实现结合此查询以将两个联接都加入到该字段客户中。 我还尝试了一个 if 查询:if type 0.. else type 1.. 但它不起作用。

如果你能帮助我,我会很高兴的! 如果有什么不清楚的请询问。 谢谢!

【问题讨论】:

标签: php mysql sql codeigniter join


【解决方案1】:

当然,只需给每个表一个不同的别名。

【讨论】:

  • 但至少我需要 $select = "blablabla..., c.name as customer"; 行中的两个结果?
  • 是的,例如,如果您想从同一个表中输入名称,只需在其前面加上您在 FROM 语句中提供的别名即可。例如 1.name、2.name
  • 谢谢。我只是更改为 select = "blablabla..., c1.name as customer, c2.name as customer";。现在我得到一个显示的值,但它是错误的值。我会检查我的查询
  • 有效!太感谢了!我为此困惑了好几天!
  • 很高兴听到。我以前去过那里^
【解决方案2】:

是的,您可以加入一张桌子两次。你可以检查这个链接。 MySQL: How do I join same table multiple times?

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多